Skip to content

Latest commit

 

History

History
220 lines (188 loc) · 7.31 KB

README.md

File metadata and controls

220 lines (188 loc) · 7.31 KB

wicc-wallet-utils-js v2.0

Official JavaScript library that provides WICC Offline Wallet capabilities

Installation

CDN

<script src="https://sw91.net/devops/wicc-wallet-utils/wicc-wallet-lib-2.0.0.js"></script>

NPM

npm install wicc-wallet-lib

Usage

const { Wallet, WalletManager, WaykiTransaction, BaasClient } = require("wicc-wallet-lib")

Key Classes

Wallet —— Constructor of a blockchain wallet

Demo

const privKeyWIF = "Y6J4aK6Wcs4A3Ex4HXdfjJ6ZsHpNZfjaS4B9w7xqEnmFEYMqQd13"
const wallet = new Wallet(privKeyWIF) 
//{privateKey: 'Y6J4aK6Wcs4A3Ex4HXdfjJ6ZsHpNZfjaS4B9w7xqEnmFEYMqQd13', address: 'wLKf2NqwtHk3BfzK5wMDfbKYN1SC3weyR4' }

Instance Methods

  • signMessage

    Message signature method

const msg = "wicc test"
const signTx = wallet.signMessage(msg) 
  • publicKeyAsHex

    Get wallet public key

const pubKey = wallet.publicKeyAsHex()

WalletManager —— Constructor of wallet management

Demo

const networkType = "testnet"
var walletManager = new WalletManager(networkType)

Instance Methods

  • randomMnemonicCodes

    Generate a mnemonic randomly

const lang = "ENGLISH" // or CHINESE
const mnemonics = walletManager.randomMnemonicCodes(lang) 
//mnemonics = "clinic dose kingdom fetch away industry squirrel cheese purchase mean slide mixed"
  • switchMnemonicCodes

    Switching from mnemonics in the current language to mnemonics in another language, both can generate the same wallet

var mnemonics1 = walletManager.randomMnemonicCodes("ENGLISH") 
var wallet1 = walletManager.importWalletFromMnemonic(mnemonics)

var mnemonics2 = walletManager.switchMnemonicCodes(mnemonics1, "CHINESE") 
var wallet2 = walletManager.importWalletFromMnemonic(mnemonics2)

wallet1.address === wallet2.address
  • createWallet

    Create a blockchain wallet from valid mnemonics, returns a instance object of Wallet

var wallet = walletManager.createWallet(mnemonics)
  • importWalletFromMnemonic

    Import an existing wallet from its mnemonics

var wallet = walletManager.importWalletFromMnemonic(mnemonics)
  • importWalletFromPrivateKey

    Import an existing wallet from its private key

var wallet = walletManager.importWalletFromPrivateKey(privateKeyWIF)

WaykiTransaction —— Constructor of transaction signature

var wallet = new Wallet(privKeyWIF) 
var txParams = {
  nTxType: 15, // transaction type
  nValidHeight: 34400,    // create height
  srcRegId: '0-1',    // sender's regId
  appId: "24555-1",  // app regId
  feeSymbol: "WICC",
  coinSymbol: "WUSD",
  fees: 1000000,         // fees pay for miner
  amount: 8,              // amount of WICC to be sent to the app account
  vContract: "f018"      // contract method, hex format string
};
var transaction = new WaykiTransaction(txParams, wallet)

Instance Methods

  • genRawTx
var rawTx = transaction.genRawTx()

List of all transactions

Transaction type nTxType Demo
ACCOUNT_REGISTER_TX 2 test-registeraccounttx.js
BCOIN_TRANSFER_TX 3 test-commontx.js
LCONTRACT_INVOKE_TX 4 test-callcontracttx.js
LCONTRACT_DEPLOY_TX 5 test-registercontracttx.js
DELEGATE_VOTE_TX 6 test-delegatetx.js
ASSET_ISSUE_TX 9 test-assetcreatetx.js
ASSET_UPDATE_TX 10 test-assetupdatetx.js
UCOIN_TRANSFER_TX 11 test-ucointransfertx.js
UCOIN_CONTRACT_INVOKE_TX 15 test-ucontractinvoketx.js
CDP_STAKE_TX 21 test-cdpstaketx.js
CDP_REDEEMP_TX 22 test-cdpredeemtx.js
CDP_LIQUIDATE_TX 23 test-cdpliquidatetx.js
DEX_LIMIT_BUY_ORDER_TX 84 test-dexbuylimitordertx.js
DEX_LIMIT_SELL_ORDER_TX 85 test-dexselllimitordertx.js
DEX_MARKET_BUY_ORDER_TX 86 test-dexbuymarketordertx.js
DEX_MARKET_SELL_ORDER_TX 87 test-dexsellmarketordertx.js
DEX_CANCEL_ORDER_TX 88 test-dexcancelordertx.js

BaasClient —— Contains some of Baas (Blockchain as a Service) API; HTTP requerts

Demo

var baasClient = new BaasClient(BaasUrl)
BaasNetwork BaasUrl Remarks
TestNetwork https://baas-test.wiccdev.org/v2/api documentation
ProdNetwork https://baas.wiccdev.org/v2/api documentation

Instance Methods

  • getAccountInfo

    Get information of a specific wallet address, returns a Promise

const address = "whiRBzMprDzY5wq3oPsHvAnyDV8ggYNaZE"
const response = baasClient.getAccountInfo(address)
response.then(data => {
    console.log(data)
})
  • getBlockCount

    Get the current block height, returns a Promise

const response = baasClient.getBlockCount()
response.then(data => {
    console.log(data)
})
  • sendRawTx

    Broadcast transaction signature data to blockchain, returns a Promise

const rawTx = "0301818c760200011476c6077b5679c8ef47f4243ca25537d5c3f7fad883e1ac009f80e7eeef000d74657374207472616e73666572473045022100e2853b6dfb8a892659de4a43181f8a02e983cca319def2457ea7b0a14c8966ea0220733ce86e172bff8aba750d104b6f39b737c897df7c33413142bd13b2415ce2f2"
const response = baasClient.sendRawTx(rawTx)
response.then(data => {
    console.log(data)
})
  • decodeRawTx

    Get the original transaction detail based on the signature data, returns a Promise

const rawTx = "0301818c760200011476c6077b5679c8ef47f4243ca25537d5c3f7fad883e1ac009f80e7eeef000d74657374207472616e73666572473045022100e2853b6dfb8a892659de4a43181f8a02e983cca319def2457ea7b0a14c8966ea0220733ce86e172bff8aba750d104b6f39b737c897df7c33413142bd13b2415ce2f2"
const response = baasClient.decodeRawTx(rawTx)
response.then(data => {
    console.log(data)
})

Development & Tests

$ git clone https://github.com/WaykiChain/wicc-wallet-utils-js.git
$ cd wicc-wallet-utils-js
$ npm install

Build (you will get a UMD module):

  • Execution Command
$ npm run build 
  • Output
dist/wicc-wallet-lib-2.0.js

Examples

Run all the Demos:

$ npm run test

Reference Projects

bitpay/bitcore-lib

Contact us

To get community assistance and ask for help with implementation questions

License

Code released under the MIT license.

© 2017-present WaykiChain, Inc.