Skip to content
JavaScript SDK Source Code for Developer
Branch: master
Clone or download
Latest commit c429f7b Feb 27, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
examples
log
src
test Import history BTC tx Jan 21, 2019
.gitignore
LICENSE Initial commit Aug 28, 2018
README.md
conf.json add WETH->WETH normal transaction support Nov 1, 2018
index.js
package-lock.json
package.json Fix typo Jan 21, 2019

README.md

wanchain-js-sdk

GitHub License

Wanchain SDK for making crosschain transactions on the Wanchain network

Note: Currently only Ethereum and ERC20 can be used on 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('ETH', 'ETH');
  dstChain = global.crossInvoker.getSrcChainNameByContractAddr('WAN', '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.getEthSmgList()).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

Development

  1. git clone https://github.com/wanchain/wanchain-js-sdk.git
  2. npm install
  3. npm test

Next Todos

  • Add support for more of the contract methods
  • Add support for more available tokens

License

You can’t perform that action at this time.