Installation
Copy yarn add @xchainjs/xchain-binance
Peer Dependencies
You can visit the package repository to get the updated peer dependencies by looking at the "peerDependencies" object in the "package.json" file.
Testing
Copy yarn install
yarn test
Example
Connect Wallet to New Binance Chain Client
The network default is Mainnet
Copy //Imports
import { Client } from '@xchainjs/xchain-binance'
import { FeeOption } from "@xchainjs/xchain-client"
// Connect wallet to new btc client
const connectWallet = async () => {
let phrase = "phrase"
const bncClient = new Client({phrase })
let address = bncClient.getAddress()
console.log(`Asset Address is: ${address}`)
let balances = await bncClient.getBalance(address)
try {
let assetAmount = (baseToAsset(balances[0].amount)).amount()
console.log(`with balance: ${assetAmount}`)
} catch (error) {
console.log('no balance')
}
}
Transfer BNB Using BncClient
Create a new instance of BncClient
Set the correct amount using xchain-util helper functions
Build new transactions using TxParams and call transfer.
Copy const transferBnb = async () => {
let amountToTransfer = 0.0001
let recipient = await getRecipientAddress()
let phrase = "phrase"
const bncClient = new Client({phrase })
let amount = assetToBase(assetAmount(amountToTransfer, 8))
console.log("Building transaction")
try {
const txid = await bncClient.transfer({
"walletIndex":0,
"asset": AssetBNB,
"amount": amount,
"recipient": recipient,
"memo": "memo"
})
console.log(`Amount ${amount.amount().toString()} ${AssetBNB.symbol} TransactionId: ${txid}`)
} catch (error) {
console.log(`Transfer failed: ${error}`)
}
}
Get Transaction Data & Transaction History
Create a new BncClient instance
Call getTransactionData(hash) returns [object object]
Retrieve relevant data
Copy let hash = "insert hash string"
try {
const txData = await bncClient.getTransactionData(hash)
console.log(`From ${JSON.stringify(txData.from[0]["from"])}`)
console.log(`To ${JSON.stringify(txData.to[0]["to"])}`)
} catch (error) {
console.log(`Error: ${error}`)
}
// Retrieve transaction history for a set address
// txHistoryParams > address, offset, startTime, asset?
try {
const txHistory = await bncClient.getTransactions({address: Address, limit:4 })
console.log(`Found ${txHistory.total.toString()}`)
txHistory.txs.forEach(tx => console.log(JSON.stringify(tx.to)))
} catch (error) {
console.log(`Error: ${error}`)
}
Get Current Fees
BNC is a fixed fee client, average, fast, and fastest return the same value.
getFees() returns current fees for the network
getMultiSendFees() returns current fees for a multi-send tx
Copy try {
const fee = await bncClient.getFees()
console.log(`Fees average: ${baseToAsset(fee.average).amount()}`)
console.log(`Fees fast: ${baseToAsset(fee.fast).amount()}`)
console.log(`Fees fastest: ${baseToAsset(fee.fastest).amount()}`)
} catch (error) {
console.log(error)
}
Multisend Transaction
Building a multisend transaction with BncClient
Build transactions with transactions taking an Array of objects.
Copy const multisendTransfer = async () => {
let recipientA = "recipient A address"
let recipientB = "recipient B address"
let amountToTransfer = 0.0001
let amountA = assetToBase(assetAmount(amountToTransfer, 8))
let amountB = assetToBase(assetAmount(amountToTransfer, 8))
let phrase = "phrase"
const bncClient = new Client({phrase})
console.log("Building transaction ")
try {
const txId = await bncClient.multiSend({
"walletIndex": 0,
"transactions": [{
"coins":[{
"asset": AssetBNB,
"amount": amountA
}],
"to":recipientA
}, {
"coins": [{
"asset":AssetBNB,
"amount": amountB
}],
"to":recipientB
}],
"memo": "memo"
})
console.log(`Multisend Txid: ${txId}`)
} catch (error) {
console.log(`Multi transfer failed: ${error} `)
}
}