1.5.1 • Published 2 years ago
wanchain-js-sdk v1.5.1
wanchain-js-sdk
Wanchain SDK for making crosschain transactions on the Wanchain network
Note: Currently Ethereum/ERC20/Bitcoin/EOS can be used on testnet and mainnet.
Install
Use NPM to install the library:
git clone https://github.com/wanchain/wanchain-js-sdk.git
npm install
Configure
You need a config.js file as the following:
const config = {
port: 8545, //wanchain api port
useLocalNode: false, // if you like to use your local node, otherwise please set to false
logPathPrex: '', // your logs directory prefix, if you like your logs file under current directory just leave it blank.
loglevel: 'info', // log level, we have four levels info,debug,warn and error.
databasePathPrex: '', // your lowdb dirctory prefix.
};
const SLEEPTIME = 10000; //sleep time checking for storeman event when redeem
module.exports = {
config,
SLEEPTIME,
};
Basic Usage
Define the transaction
Start by create a new WalletCore instance with abovementioned config then initialize it.
walletCore = new WalletCore(config);
walletCore.init();
Then define the source chain and destination chain.
srcChain = global.crossInvoker.getSrcChainNameByContractAddr(srcSCAddr, 'ETH');
dstChain = global.crossInvoker.getSrcChainNameByContractAddr(buddySCAddr, 'WAN');
Then define the details of the crosschain transaction. The wanchain-js-sdk crosschain methods require you to pass in this transaction object. The required values depend on chain and direction.
//define your wanchain gas parameter and your wallet password
const WAN_PARA = {
gasPrice: '180',
gasLimit: '470000',
password: 'password'
};
//define your ethereum gas parameter and your wallet password
const ETH_PARA = {
gasPrice: '10',
gasLimit: '470000',
password: 'password'
};
// Instance INPUT
const ethInboundInput = {
lockInput: Object.assign({}, {
from: ETHADDR,
to: WANADDR,
amount: '0.00113',
}, ETH_PARA),
redeemInput: WAN_PARA,
revokeInput: ETH_PARA
};
Invoke the lock transaction
Firstly you need to check storeman groups which serve ETH coin transaction then invoke the transaction!
// checking storeman groups which serve ETH coin transaction
storemanList = (await ccUtil.getSmgList('ETH')).sort((a, b) => b.inboundQuota - a.inboundQuota);
ethInboundInput.lockInput.txFeeRatio = storemanList[0].txFeeRatio;
ethInboundInput.lockInput.storeman = storemanList[0].ethAddress;
// Invoke the lock transaction on Ethereum
retLock = await global.crossInvoker.invoke(srcChain, dstChain, 'LOCK', ethInboundInput.lockInput);
There are generally several independent transactions including LOCK, REDEEM, REVOKE etc.
Documentation
Cross-chain Transactions
Examples
- ETH to WETH lock
- ETH to WETH redeem
- ETH to WETH revoke
- WETH to ETH lock
- WETH to ETH redeem
- WETH to ETH revoke
- ERC20 to WERC20 lock
- ERC20 to WERC20 redeem
- ERC20 to WERC20 revoke
- WERC20 to ERC20 lock
- WERC20 to ERC20 redeem
- WERC20 to ERC20 revoke
Development
git clone https://github.com/wanchain/wanchain-js-sdk.git
npm install
npm test
Next Todos
- Add support for more of the contract methods
- Add support for more available tokens