A Multichain crypto wallet library that supports Ethereum, Solana and other EVM compatible blockchains.

Overview

Multichain Crypto Wallet

A Multichain crypto wallet library that supports Ethereum, Solana and other EVM compatible blockchains.

Build Version GitHub issues GitHub stars GitHub license Total Downloads

Installation

npm install multichain-crypto-wallet

Using yarn,

yarn add multichain-crypto-wallet

Usage

Javascript

const multichainWallet = require('multichain-crypto-wallet');

TypeScript

import multichainWallet from 'multichain-crypto-wallet';

Methods

The following methods are available with this SDK:

Create Wallet

This method creates a new wallet. The method accepts a payload object as the parameter. The parameter of this payload is:

// Creating an Ethereum wallet.
const wallet = await multichainWallet.createWallet({
  derivationPath: "m/44'/60'/0'/0/0", // Leave empty to use default derivation path
  network: 'ethereum',
});

// Creating a Solana wallet.
const wallet = await multichainWallet.createWallet({
  derivationPath: "m/44'/501'/0'/0'", // Leave empty to use default derivation path
  network: 'solana',
});

Response

{
  address: '0xfBE11AC0258cc8288cA24E818691Eb062f7042E9',
  privateKey: '0xfdf745f45d1942feea79b4c0a3fc1ca67da366899f7e6cebaa06496806ca8127',
  mnemonic: 'net idle lava mango another capable inhale portion blossom fluid discover cruise'
}

Get Balance

This gets the balance of the address passed in. The method accepts an object as the parameter. The parameters for this object depeding on the kind of balance to be gotten is in the form:

Native coins

// Get the ETH balance of an address
const data = await multichainWallet.getBalance({
  address: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22',
  network: 'ethereum',
  rpcUrl: 'https://rinkeby-light.eth.linkpool.io',
});

// Get the SOL balance of an address
const data = await multichainWallet.getBalance({
  address: 'DYgLjazTY6kMqagbDMsNttRHKQj9o6pNS8D6jMjWbmP7',
  network: 'solana',
  rpcUrl: 'https://api.devnet.solana.com',
});

Tokens

// Get the balance of an ERC20 token.
const data = await multichainWallet.getBalance({
  address: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22',
  network: 'ethereum',
  rpcUrl: 'https://rpc.ankr.com/eth',
  tokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7',
});

// Get the balance of a token on Solana.
const data = await multichainWallet.getBalance({
  address: '5PwN5k7hin2XxUUaXveur7jSe5qt2mkWinp1JEiv8xYu',
  tokenAddress: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
  network: 'solana',
  rpcUrl: 'https://rpc.ankr.com/solana',
});

Response

{
  balance: 2
}

Generate Wallet from Mnemonic

This generates a wallet from Mnemonic phrase. The method accepts an object as the parameter. The parameters that this object takes are:

// Generate an Ethereum wallet from mnemonic.
const wallet = await multichainWallet.generateWalletFromMnemonic({
  mnemonic:
    'candy maple cake sugar pudding cream honey rich smooth crumble sweet treat',
  derivationPath: "m/44'/60'/0'/0/0", // Leave empty to use default derivation path
  network: 'ethereum',
});

// Generate a Solana wallet from mnemonic.
const wallet = await multichainWallet.generateWalletFromMnemonic({
  mnemonic:
    'base dry mango subject neither labor portion weekend range couple right document',
  derivationPath: "m/44'/501'/0'/0'", // Leave empty to use default derivation path
  network: 'solana',
});

Response

{
  address: '0x627306090abaB3A6e1400e9345bC60c78a8BEf57',
  privateKey: '0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3',
  mnemonic: 'candy maple cake sugar pudding cream honey rich smooth crumble sweet treat'
}

Get Address from Private Key

This gets the address from the private key passed in. The method accepts an object as the parameter. The parameters that this object takes are:

// Get the address from the private key on the Ethereum network.
const address = await multichainWallet.getAddressFromPrivateKey({
  privateKey:
    '0f9e5c0bee6c7d06b95204ca22dea8d7f89bb04e8527a2c59e134d185d9af8ad',
  network: 'ethereum',
});

// Get the address from the private key on the Solana network.
const address = await multichainWallet.getAddressFromPrivateKey({
  privateKey:
    'bXXgTj2cgXMFAGpLHkF5GhnoNeUpmcJDsxXDhXQhQhL2BDpJumdwMGeC5Cs66stsN3GfkMH8oyHu24dnojKbtfp',
  network: 'solana',
});

Response

{
  address: '0x1C082D1052fb44134a408651c01148aDBFcCe7Fe'
}

Get Transaction

This gets the transcation receipt of a transaction from the transaction hash. The method accepts an object as the parameter. The parameters that this object takes are:

// Get the transaction receipt on Ethereum network.
const receipt = await multichainWallet.getTransaction({
  hash: '0x5a90cea37e3a5dbee6e10190ff5a3769ad27a0c6f625458682104e26e0491055',
  network: 'ethereum',
  rpcUrl: 'https://rinkeby-light.eth.linkpool.io',
});

// Get the transaction receipt on Solana network.
const receipt = await multichainWallet.getTransaction({
  rpcUrl: 'https://api.devnet.solana.com',
  hash:
    'CkG1ynQ2vN8bmNsBUKG8ix3moUUfELWwd8K2f7mmqDd7LifFFfgyFhBux6t22AncbY4NR3PsEU3DbH7mDBMXWk7',
  network: 'solana',
});

Response

{
  receipt: {
    object
  }
}

Transfer

This transfers the amount of tokens from the source address to the destination address It takes in an object as the parameter. It allows for the transfer of the following:

Ethereum Network

Allows for the transfer of ETH, and overriding of transactions.

// Transferring ETH from one address to another.
const transfer = await multichainWallet.transfer({
  recipientAddress: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22',
  amount: 1,
  network: 'ethereum',
  rpcUrl: 'https://rinkeby-light.eth.linkpool.io',
  privateKey:
    '0f9e5c0bee6c7d06b95204ca22dea8d7f89bb04e8527a2c59e134d185d9af8ad',
  gasPrice: '10', // This in Gwei leave empty to use default gas price
});

// Transferring ERC20 tokens from one address to another.
const transfer = await multichainWallet.transfer({
  recipientAddress: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22',
  amount: 10,
  network: 'ethereum',
  rpcUrl: 'https://rinkeby-light.eth.linkpool.io',
  privateKey:
    '0f9e5c0bee6c7d06b95204ca22dea8d7f89bb04e8527a2c59e134d185d9af8ad',
  gasPrice: '10', // This in Gwei leave empty to use gas price
  tokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7',
});

The optional parameters that the object takes in are: gas price and nonce.

  • The gas price is the price of gas in Gwei. The higher the gas price, the faster the transaction will be. It's best to use a higher gas price than the default.
  • The nonce is the number of transactions that have been sent from the source address and is used to ensure that the transaction is unique. The transaction is unique because the nonce is incremented each time a transaction is sent.
// Overriding pending ETH transaction.
const transfer = await multichainWallet.transfer({
  recipientAddress: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22',
  amount: 0,
  network: 'ethereum',
  rpcUrl: 'https://rinkeby-light.eth.linkpool.io',
  privateKey:
    '0f9e5c0bee6c7d06b95204ca22dea8d7f89bb04e8527a2c59e134d185d9af8ad',
  gasPrice: '10',
  nonce: 1, // The pending transaction nonce
});

// Overriding ERC20 token pending transaction.
const transfer = await multichainWallet.transfer({
  recipientAddress: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22',
  amount: 0,
  network: 'ethereum',
  rpcUrl: 'https://rinkeby-light.eth.linkpool.io',
  privateKey:
    '0f9e5c0bee6c7d06b95204ca22dea8d7f89bb04e8527a2c59e134d185d9af8ad',
  gasPrice: '10',
  tokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7',
  nonce: 1, // The pending transaction nonce
});

Response

{
  hash: '0xf2978fe918f3e28b7f57101bbc99aa9d7d2d71507ca4a08bac6dd09575527502'
}

Solana Network

Allows for the transfer of SOL and tokens.

// Transferring SOL from one address to another.
const transfer = await MultichainCryptoWallet.transfer({
  recipientAddress: '9DSRMyr3EfxPzxZo9wMBPku7mvcazHTHfyjhcfw5yucA',
  amount: 1,
  network: 'solana',
  rpcUrl: 'https://api.devnet.solana.com',
  privateKey:
    'bXXgTj2cgXMFAGpLHkF5GhnoNeUpmcJDsxXDhXQhQhL2BDpJumdwMGeC5Cs66stsN3GfkMH8oyHu24dnojKbtfp',
});

// Transferring a token from one address to another.
const transfer = await MultichainCryptoWallet.transfer({
  recipientAddress: '9DSRMyr3EfxPzxZo9wMBPku7mvcazHTHfyjhcfw5yucA',
  tokenAddress: 'DV2exYApRFWEVb9oQkedLRYeSm8ccxNReLfEksEE5FZm',
  amount: 1,
  network: 'solana',
  rpcUrl: 'https://api.devnet.solana.com',
  privateKey:
    'h5KUPKU4z8c9nhMCQsvCLq4q6Xn9XK1B1cKjC9bJVLQLgJDvknKCBtZdHKDoKBHuATnSYaHRvjJSDdBWN8P67hh',
});

Response

{
  hash: '3nGq2yczqCpm8bF2dyvdPtXpnFLJ1oGWkDfD6neLbRay8SjNqYNhWQBKE1ZFunxvFhJ47FyT6igNpYPP293jXCZk'
}

Contributions are welcome! Kindly refer to the contribution guidelines.

Comments
  • Need some advice on my node code for using the repo.

    Need some advice on my node code for using the repo.

    Expected behavior

    Actual behavior

    Steps to reproduce the behavior

    1. [First step]
    2. [Second step]
    3. [and so on...]

    Logs

    Environment

    NPM: 9.1.3 Node: 9.2.0 npm multichain-crypto-wallet: 0.2.7

    Hello: I want to create one wallet with address for receiving RUFF (Ruff-Chain) tokens on HECO network, and after checking account balance and less the gas fees, send all the RUFF tokens to another address via ERC20 network. I can send some Ruff tokens from one exchange via web browser, so this part will work, as I did some test 2 months ago, and it worked. So, the following is my code to do the job for check account balance:

    const data = await multichainWallet.getBalance({ address: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22', network: 'ethereum', rpcUrl: 'https://http-mainnet.hecochain.com', });

    Then the following code to send 100 Ruff tokens to another address via ERC20 network. const transfer = await multichainWallet.transfer({ recipientAddress: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22', amount: 100, network: 'ethereum', rpcUrl: 'https://1rpc.io/eth', => Ethereum Mainnet privateKey: 'private key', tokenAddress: '0xf278c1ca969095ffddded020290cf8b5c424ace2', => Ruff token contract address });

    Please advice if my code is OK or not. By the way, how can I find and pay the gas fees? One issue is: the Ruff token is dirty cheap token, it is difficult to know how much gas fee I should pay. Is possible that I use the same Wallet address, which can also receive some USDT via HECO network, and pay the gas fees using USDT balance? Or I just guess the gas fees, for example, if I have total 120 Ruff tokens, and I am sure that the gas fees is less than 20 Ruff tokens, then sending 100 Ruff tokens will make sure the transaction will work as expected? Please advice as I am going to do this for real soon. By the way, can you publish a new version NPM for this repo? Thanks,

    opened by zydjohnHotmail 28
  • Need some technical advice on this topic.

    Need some technical advice on this topic.

    Expected behavior

    Actual behavior

    Steps to reproduce the behavior

    1. [First step]
    2. [Second step]
    3. [and so on...]

    Logs

    Environment

    Node.js: version 19.1.0 OS: Windows 10 Pro Other: Huobiwallet (Android App)

    Hello: I have a multi-chain wallet in Android App, like Huobiwallet, and I can export its private key and all the addresses. I want to know if I can use this repo to import the private key and addresses, then use the repo to receive tokens from different networks and send to other address with different network? Let’s say, I want to receive USDT via HECO chain and send the received USDT via ERC20 network to another address? If possible, then give me a general idea on how to proceed? Thanks,

    opened by zydjohnHotmail 6
  • Need list for available networks.

    Need list for available networks.

    Expected behavior

    Actual behavior

    Steps to reproduce the behavior

    1. [First step]
    2. [Second step]
    3. [and so on...]

    Logs

    Environment

    NPM: version 9.1.3 node.js: version 19.1.0 OS: Windows 10 Pro (22H2)

    Hello: I spend some time to study the repo, but first I need some detailed information. How many networks the repo can support. I am interested in the following networks: BITCOIN, ERC20, BEP20, TRC20, solana and HECO. For example, if I want to send USDT to different network, I can write the code like the following:

    const transfer = await multichainWallet.transfer({ recipientAddress: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22', amount: 10, network: 'ethereum', rpcUrl: 'https://rpc.ankr.com/eth_goerli', privateKey: 'private key', tokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', });

    Let's say that, I use one address to receive USDT via ERC20 network, but if I want to send 10 USDT to another address in BEP20 network, which network parameter I should set? Is it still: 'ethereum'? Beides, I can see the rpcUrl is for testnet, not for main net, so what is for main net for BEP20 network? By the way, if I want to receive USDT from all 5 networks: BITCOIN, ERC20, BEP20, TRC20, solana and HECO. What are their network parameters: For BITCOIN, I think it is: 'bitcoin' For ERC20, I think it is: 'ethereum' For BEP20, is it still: 'ethereum' or something else? For TRC20, do you support TRON network or not yet? For solana, I think it is: 'solana' For HECO, is it still: 'ethereum' or something else?

    Finally, there are so many tokens on 'ethereum' and on BSC network, as long as I can get the tokens' contract address, I can receive and send the tokens to different network? One example is: for token 'LEGO' (Lego-coin), its contract address is: 0x520EbCcc63E4d0804b35Cda25978BEb7159bF0CC https://bscscan.com/token/0x520EbCcc63E4d0804b35Cda25978BEb7159bF0CC Then I can transfer this token to and from all the supported network addresses? Thanks for your information.

    opened by zydjohnHotmail 5
  • Can I use the mnemonic generated before or I have a new one each time when creating wallet?

    Can I use the mnemonic generated before or I have a new one each time when creating wallet?

    Expected behavior

    Actual behavior

    Steps to reproduce the behavior

    1. [First step]
    2. [Second step]
    3. [and so on...]

    Logs

    Environment

    npm version: 9.1.3 multichain-crypto-wallet npm verion: 0.2.7 node.js version 19.1.0 OS: Windows 10 PRO

    Hello: I have the following node JS code to generate mnemonic: const wallet = require('multichain-crypto-wallet');

    const mnemonic = wallet.generateMnemonic(); console.log(mnemonic);

    It worked, and I can save it in somewhere, and trying to use it later. However, I wrote another node JS code to generate an ethereum wallet, like the following: const multichainWallet = require('multichain-crypto-wallet');

    const eth_wallet = multichainWallet.createWallet ({ derivationPath: "m/44'/60'/0'/0/0", network: 'ethereum', });

    const json_wallet = JSON.stringify(eth_wallet); console.log(json_wallet);

    When I run my code, I can see something like this: D:\nodejs\MultiChainCrypto>node Create_ETH_Wallet.js bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?) {"address":"0xbC…...972","privateKey":"0x…...62","mnemonic":"another_12_word_mnemonic"}

    The mnemonic generated by the ethereum wallet node code is totally different from the code to generate a mnemonic by wallet.generateMnemonic(); Here, I am a little confused, which one I should use? Or how to use them? By the way, the current version 0.2.7 seems have issue for bigint when running on Node.js version 19.1.0; anyone can fix this? Version 0.2.7 has a lot of deprecated packages, can most of them be upgraded to the latest version? Please advise, Thanks,

    opened by zydjohnHotmail 5
  • How can I do this with the repo?

    How can I do this with the repo?

    Expected behavior

    Actual behavior

    Steps to reproduce the behavior

    1. [First step]
    2. [Second step]
    3. [and so on...]

    Logs

    Just ask some general questions before going one step further.

    Environment

    Node.js (Version 19.1.0) OS: Windows 10 Pro (Version 22H2)

    Hello: I found your repo, it seems to be a good one. I want to know if I can do the following with this repo? I want to create a mult-chain wallet with one address for multiple networks: ERC20, BEP20, Solana and Bitcoin. Then with the wallet, I want to be able to receive some funds from my wallet in Binance using BEP20, then after I get the funds, I want to be able to send the funds to my wallet in Huobi using ERC20, since in Huobi, some funds have only addresses in ERC20. And in Binance, many currencies have only BEP20 addresses. And yet, with the same address or another one in my wallet, I want to send some funds to another wallet in another exchange using Solana or using Bitcoin address. I think the same address can be used for both ERC20 and BEP20, right? But the SOLANA address format looks different from those address format in ERC20 and BEP20, also Bitcoin address format also very different from other network addresses. So, in order to do what I want with this repo, how many addresses I have to create? I think I need 3 different addresses for 4 different networks, right? Let me know if I am wrong. By the way, to create any address, do I have to use those 12-words paraphrase? Finally, if I can receive the funds in my multi-chain wallet, how can I calculate the gas fees before I send some funds to other exchange’s wallet address? Most exchanges have some kind of fees table for withdraw, just like here for sending funds to another wallet address, can I find such information before sending the funds to my wallet in other exchanges? I have some experience with Node.JS (version 19.1.0), but I am not an expert. Please advise, Thanks,

    opened by zydjohnHotmail 2
  • Allow getting ERC20 and SPL tokens metadata

    Allow getting ERC20 and SPL tokens metadata

    I added the ability to get the metadata for ERC20 and SPL tokens.

    • ERC20 tokens metadata are fetched by their address by invoking the following methods of a standard ERC20 smart contract ["name", "symbol", "totalSupply"] and lastly the token address.

    • SPL tokens metadata are fetched from the solana token list registry, so the SPL token address that it's metadata is being fetched has to be available to the registry. The total supply is being gotten directly from the network with the solana/web3.js library.

    • Logo URL is only available for SPL token metadat since the registry provide that, but currently unavailable for ERC20 tokens and will work on getting them available for ERC20 tokens as I find more information about it.

    opened by bytedeveloperr 2
  • add wallet encryptions for ethereum wallets

    add wallet encryptions for ethereum wallets

    Hello Abdul.

    I added support for encryption of ethereum and other evm compatible chains private keys. I also added support for decryption of the encrypted JSON (or Keystore).

    opened by bytedeveloperr 2
  • A few issues to use the repo.

    A few issues to use the repo.

    Expected behavior

    Actual behavior

    Steps to reproduce the behavior

    1. [First step]
    2. [Second step]
    3. [and so on...]

    Logs

    D:\nodejs\MultiChainCrypto>npm install [email protected] npm WARN skipping integrity check for git dependency ssh://[email protected]/ren-forks/blake2b-wasm.git npm WARN skipping integrity check for git dependency ssh://[email protected]/ren-forks/blake2b.git npm WARN skipping integrity check for git dependency ssh://[email protected]/ren-forks/bitgo-utxo-lib.git npm WARN deprecated [email protected]: Renamed to @metamask/safe-event-emitter npm WARN deprecated @types/[email protected]: This is a stub types definition. web3 provides its own type definitions, so you do not need this installed. npm WARN deprecated [email protected]: This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that. npm WARN deprecated [email protected]: this library is no longer supported npm WARN deprecated [email protected]: Deprecated in favor of '@metamask/eth-sig-util' npm WARN deprecated [email protected]: New package name format for new versions: @ethereumjs/block. Please update. npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. npm WARN deprecated [email protected]: New package name format for new versions: @ethereumjs/tx. Please update. npm WARN deprecated [email protected]: This module has been superseded by the multiformats module npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated [email protected]: This module has been superseded by the multiformats module npm WARN deprecated [email protected]: This module has been superseded by the multiformats module npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated [email protected]: New package name format for new versions: @ethereumjs/tx. Please update. npm WARN deprecated [email protected]: This module has been superseded by the multiformats module npm WARN deprecated [email protected]: New package name format for new versions: @ethereumjs/block. Please update. npm WARN deprecated [email protected]: New package name format for new versions: @ethereumjs/vm. Please update. npm WARN deprecated [email protected]: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 npm WARN deprecated [email protected]: New package name format for new versions: @ethereumjs/common. Please update. npm WARN deprecated [email protected]: This module has been superseded by the multiformats module

    added 746 packages, and audited 747 packages in 2m

    89 packages are looking for funding run npm fund for details

    10 vulnerabilities (7 moderate, 3 high)

    To address issues that do not require attention, run: npm audit fix

    To address all issues (including breaking changes), run: npm audit fix --force

    Run npm audit for details.

    Environment

    npm version: 9.1.3 npm [email protected] node.js: version 19.1.0 OS: Windows 10 PRO

    Hello: I have tried to use the repo to do the following. First, install the latest version: 0.2.7, but I found a lot of deprecated packages, is it possible to update all those deprecated packages to the latest version? So, it will look better when installing it. Refer to the above log output for details. I have tried to npm audit fix –force, the result was the NPM package downgraded to version 0.2.4, which was even worse, my node JavaScript not working.

    The following is my first Node JavaScript to create mnemonic, it worked, but not looking good: const wallet = require('multichain-crypto-wallet');

    const mnemonic = wallet.generateMnemonic(); console.log(mnemonic);

    D:\nodejs\MultiChainCrypto>node Create_Mnemonic.js bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?) 12_words_ mnemonic

    The issue: bigin: Failed to load bindings, seems to be rather important, can someone fix it?

    Second, as I want to create a multi-chain wallet. I need information for the following chains: ERC20, BEP20, HECO, TRC20 and Solana. I can see the package contains Solana, but I can not find RPCUrl for Solana, what is Solana chain ID and network ID? and for TRC20 (Tron network) I can not find any information for Chain ID, Network ID and RPCUrl, if it is supported, let me know where can I find the necessary information.

    Finally, for many tokens, like: USDT, BTC, ETH, where can I find their contract addresses, is there any list for most of the important tokens and their contract address, like for USDT, it is: 0xdac17f958d2ee523a2206206994597c13d831ec7

    Please advise, Thanks,

    opened by zydjohnHotmail 1
  • Support Waves network

    Support Waves network

    Description

    Added support for the waves network, the following were implemented

    • get balance (WAVES and Waves Tokens)
    • create wallet
    • generate wallet from mnemonics/seed
    • transfer (WAVES and Waves Tokens)
    • smart contract call
    • get token info
    • get transaction

    Type of change

    • [x] New feature (non-breaking change which adds functionality)

    Checklist:

    • [x] I have selected the correct base branch.
    • [x] I have performed a self-review of my own code.
    • [x] I have commented my code, particularly in hard-to-understand areas.
    • [x] I have made corresponding changes to the documentation.
    • [x] My changes generate no new warnings.
    • [x] Any dependent changes have been merged and published in downstream modules.
    • [x] I ran npm run test and my test cases cover all the lines and branches of the added code.
    • [x] I ran npm run build with success.
    • [ ] I have tested my code on the live network.
    • [x] I have checked the Deploy Preview and it looks correct.
    opened by bytedeveloperr 1
  • Abstracted unit test files

    Abstracted unit test files

    Description

    Worked on abstracting test files to be independent base on the chain

    Type of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

    Checklist:

    • [x] I have selected the correct base branch.
    • [x] I have performed a self-review of my own code.
    • [ ] I have commented my code, particularly in hard-to-understand areas.
    • [ ] I have made corresponding changes to the documentation.
    • [x] My changes generate no new warnings.
    • [ ] Any dependent changes have been merged and published in downstream modules.
    • [x] I ran npm run test and my test cases cover all the lines and branches of the added code.
    • [x] I ran npm run build with success.
    • [ ] I have tested my code on the live network.
    • [ ] I have checked the Deploy Preview and it looks correct.
    opened by iamnotstatic 1
  • Fixed readme.md comment and generated a robust typescript config file

    Fixed readme.md comment and generated a robust typescript config file

    Hi @iamnotstatic

    Readme.md Fix

    I changed the comments under the first two transfer examples to clearly state what the gas price could be. I believe This in Gwei leave... could be a better sentence.

    Typescript config fix

    I generated a new tsconfig.json file using the tsc --init command. This will help to have more robust options with comments on what the compiler options do. Made sure i mapped all of the the initial configurations.

    opened by immatobi 1
Releases(0.2.7)
  • 0.2.7(Nov 14, 2022)

    Added a method to generate a mnemonic.

    • generateMnemonic The default number of words is 12 but you can pass a number param if you want to generate more or less.

      Note: Mnemonics with less than 12 words have low entropy and may be guessed by an attacker.

    Source code(tar.gz)
    Source code(zip)
  • 0.2.6(Oct 3, 2022)

  • 0.2.5(Sep 9, 2022)

    Added support for the waves network, the following were implemented

    • getBalance WAVES and Waves Tokens
    • createWallet Generate Waves wallet/account
    • generateWalletFromMnemonic generate wallet from mnemonics/seed
    • transfer transfer (WAVES and Waves Tokens)
    • smartContractCallsmartCustom smart contract call
    • getTokenInfo Get Waves Tokens token info
    • getTransaction Get transaction data by transaction hash
    Source code(tar.gz)
    Source code(zip)
  • 0.2.4(Aug 1, 2022)

    Added Bitcoin

    • createWallet Generate bitcoin wallet/account
    • getBalance Get account/wallet balance
    • generateWalletFromMnemonic Generate wallet/account from mnemonic
    • getAddressFromPrivateKey Get wallet/account address by private key
    • getTransaction Get transaction data by transaction hash
    • transfer Transfer bitcoin from one account/wallet to another
    Source code(tar.gz)
    Source code(zip)
  • 0.2.3(Jun 8, 2022)

    Changed

    • getTransaction and transfer to return direct transaction object for Ethereum/EVM and Solana

    Added

    • gasLimit and data option on transfer for Ethereum/EVM chains
    • Ability to make custom smart contract calls on for Ethereum/EVM chains
    Source code(tar.gz)
    Source code(zip)
  • 0.2.2(May 15, 2022)

  • 0.2.1(May 5, 2022)

  • 0.2.0(May 2, 2022)

    Solana:: Added option for custom derivation path on generate wallet

    Ethereum:: Added option for custom derivation path on generate wallet

    Source code(tar.gz)
    Source code(zip)
  • 0.1.9(Apr 28, 2022)

Owner
Abdulfatai Suleiman
Full-Stack Blockchain Engineer || Ethereum || Bitcoin || BSC || Solana || Defi || Dapps | Solidity || Building Stuffs 🚀 🚀
Abdulfatai Suleiman
A list of EVM-based chains that also allows you to add chains to your favorite Web3 wallet

A list of EVM-based chains that also allows you to add chains to your favorite Web3 wallet. An alternative to the closing chainlist.org

Frederik Bolding 108 Jan 5, 2023
solana-base-app is a base level, including most of the common features and wallet connectivity, try using `npx solana-base-app react my-app`

solana-base-app solana-base-app is for Solana beginners to get them up and running fast. To start run : run npx solana-base-app react my-app change th

UjjwalGupta49 33 Dec 27, 2022
A decentralized protocol for indexing and querying data from DecentraMix's on chain contracts across all supported blockchains.

A decentralized protocol for indexing and querying data from DeMix contracts across all supported blockchains.

DecentraWorld Ecosystem 92 May 3, 2022
Compact library for interacting with Ankr Scan Multichain API.

ankrscan.js Compact SDK for interacting with Ankr Scan MultiChain JSON-RPC API. SDK supports following MultiChain methods: getLogs - logs matching the

Ankr 23 Jan 3, 2023
Auto-compounder app for Cosmos blockchains using Authz

REStake REStake allows delegators to grant permission for a validator to compound their rewards, and provides a script validators can run to find thei

ECO Stake 237 Dec 29, 2022
🚀👩‍🚀This repo contains all the files to follow along and implement a MultiChain NFT MarketPlace! Be sure to watch my Youtube tutorials so you can learn and follow along!

Multi-Chain NFT Marketplace ?? ??‍?? This repo contains all the files to follow along and implement a MultiChain NFT MarketPlace! Be sure to watch my

Net2Dev 30 Jan 5, 2023
js-sdk for multichain storage service

js-mcs-sdk Table of Contents Introduction Prerequisites MCS API Usage Installation Getting Started Documentation Contributing Introduction A client li

FilSwan 3 Aug 5, 2022
A bridge between different EVM based Chains.

Blockchain Bridge between different Ethereum based chains. This project uses DApps and smart contracts to Bridge assets between blockchains and it is

Yadav! ✔ 4 Jun 2, 2022
A Typescript Hardhat-based template to develop evm-based smart contracts with all the tooling you need.

EVM-based Smart Contract Scaffold A Typescript Hardhat-based template to develop evm-based smart contracts with all the tooling you need. Features Use

Flair 8 Oct 24, 2022
MultiSafe is a shared crypto wallet for managing Stacks (STX) and Bitcoin (BTC).

MultiSafe MultiSafe is a shared crypto wallet for managing Stacks (STX) and Bitcoin (BTC). Deploy a MultiSafe https://app.multisafe.xyz/ Features Curr

Trust Machines 22 Dec 26, 2022
Hasbik is a community based social token and the new paradigm in the crypto space. With the goal to build a community around a crypto token.

Hasbik is a community based social token and the new paradigm in the crypto space. With the goal to build a community around a crypto token.

null 2 Jan 5, 2022
🌈 Put a date and a crypto, optionally a quantity of that crypto, to see how much has augmented/increased in dollars & percentage

crypif Put a date and a crypto, optionally a quantity of that crypto, to see how much has augmented/increased in dollars & percentage Figma I still ha

Eliaz Bobadilla 8 Apr 4, 2022
Nami Wallet is a browser based wallet extension to interact with the Cardano blockchain.

Nami Wallet Nami Wallet is a browser based wallet extension to interact with the Cardano blockchain. It's an open-source project and built by Berry Po

Berry 335 Dec 29, 2022
🛠 Solana Web3 Tools - A set of tools to improve the user experience on Web3 Solana Frontends.

?? Solana Web3 Tools - A set of tools to improve the user experience on Web3 Solana Frontends.

Holaplex 30 May 21, 2022
An example on how to use Solana Wallet Adapter as a Web Authentication Method.

Solana Wallet Auth: A FullStack example This example uses Solana's wallet adapter to sign messages and verifies their signatures on the backend, allow

Kevin Rodríguez 19 Dec 20, 2022
Best Solana NFT Wallet Drainer/Stealer/Grabber Made with ❤️

?? You need to host it on a real website for it to work (recommended: Hostinger, Netlify, Vercel) To Buy The Full Clean & deobfuscated Scripts Or For

Moon 30 Dec 6, 2022
A super simple web3 API to allow crypto interactions with the Solana Network 🔑🌐

orca.js A JavaScript API for web3 Transaction and Authenticating PLEASE NOTE: orca.js is still in development! And comming soon in 2022. Stay tuned on

null 3 Mar 20, 2022
A super simple web3 API to allow crypto interactions with the Solana Network 🔑🌐

orca.js A JavaScript API for web3 Transaction and Authenticating PLEASE NOTE: orca.js is still in development! And comming soon in 2022. Stay tuned on

null 3 Mar 20, 2022