This is Node.js implementation of 0chain js-client-sdk. Use this SDK to interact with 0Chain blockchain. The SDK supports wallet creation, transaction submission and verification. In addition to that, the sdk provides APIs to query blockchain health itself. See example.js file for more details.
Via Github: https://github.com/0chain/js-client-sdk
All functions except init()
returns promise.
First import / require
the library from github https://github.com/0chain/js-client-sdk
import jsClientSdk from 'js-client';
Before any function in the SDK to be called, the init function with the cluster configuration and bls-wasm instance should be called.
While initialising js-client-sdk, a bls instance is to be passed. bls can be installed via npm using the below command:
npm install bls-wasm
Github Repository:
https://github.com/herumi/bls-wasm
Input Parameters
config -- json string containig cluster configuration
Output
None
The below code shows an example of initiailizing the SDK with 0chain-local-cluster.
var config = {
"miners": [
"http://one.devnet-0chain.net:31071/",
"http://one.devnet-0chain.net:31072/",
"http://one.devnet-0chain.net:31073/",
"http://one.devnet-0chain.net:31074/",
"http://one.devnet-0chain.net:31075/",
"http://one.devnet-0chain.net:31076/",
"http://one.devnet-0chain.net:31077/",
"http://one.devnet-0chain.net:31078/",
"http://one.devnet-0chain.net:31079/"
],
"sharders": [
"http://one.devnet-0chain.net:31171/",
"http://one.devnet-0chain.net:31172/",
"http://one.devnet-0chain.net:31173/",
"http://one.devnet-0chain.net:31174/",
"http://one.devnet-0chain.net:31175/",
"http://one.devnet-0chain.net:31176/",
"http://one.devnet-0chain.net:31177/",
"http://one.devnet-0chain.net:31178/",
"http://one.devnet-0chain.net:31179/"
],
"chain_id" : "0afc093ffb509f059c55478bc1a60351cef7b4e9c008a53a6cc8241ca8617dfe",
"clusterName" : "0chain-local-cluster",
"transaction_timeout" : 20,
"state " : true
}
jsClientSdk.init(config, bls)
To use local cluster, call init with bls-wasm instance configuration
jsClientSdk.init(bls)
Registers a client with 0Chain Blockchain.
Input Parameters None
Output
Wallet object in case of successful promise resolved.
jsClientSdk.registerClient()
Restore a existing client with 0Chain Blockchain. Need to pass the secret mnemonic
Input Parameters
mnemonic -- string
Output
Wallet --if successful. Error otherwise
jsClientSdk.restoreWallet(mnemonic)
Use this function send tokens from one wallet to the other.
Input Parameters
fromAccount - From Wallet
toWalletId - To wallet clientId
value - amount to send
note - description for the transaction
Ouput
Transaction --if successful. Error otherwise
jsClientSdk.sendTransaction(fromAccount, toWalletId, value, note)
Use this function to store data on a wallet
Input Parameters
fromAccount - From Wallet
data - data to save in the blockchain (string type)
note - description for the transaction
Ouput
Transaction --if successful. Error otherwise
jsClientSdk.storeData(fromAccount, data, note)
Use this function to check the status of the transaction that has been placed earlier.
Note Transaction status will be available only after the transaction is processed. Please provide at least 3 seconds time for the transaction to process. You can check status multiple times.
Input Parameters
hash - Hash of the transaction that was placed earlier
Ouput
TransactionDetails -- Details of the transaction which has the status field.
jsClientSdk.checkTransactionStatus(hash)
Use this function to get the balance of particular wallet.
Input Parameters
client_id - The clientId whose balance you are interested in
Ouput
TransactionDetails -- Details of the transaction which has the balance field.
jsClientSdk.getBalance(client_id)
sends a transaction of the specified amount as mentioned in the value parameter fromAccount toWalletId.
Input Parameters
fromAccount - from Wallet
smartContractAddress - address of intended smartContract
payload - depends on the smartContract function that is being executed
transactionValue - transaction value --by default zero
Output Transaction -- object if successful.
jsClientSdk.executeSmartContract(fromAccount, smartContractAddress, payload, transactionValue)
Use this function to get the block summary or block detail by block hash.
Input Parameters
hash -- hash of the block
options -- use BlockInfoOptions.HEADER to get only the summary or BlockInfoOptions.Full to get entire block. Default is HEADER
callback -- function to be called upon success
errCallback -- function to be called upon failure
Output
Block Summary or Block object depending on the options specified
jsClientSdk.getBlockInfoByHash(hash, options, callback, errCallback)
Use this function to get the block summary or block detail by round number.
Input Parameters
round -- round number options -- use BlockInfoOptions.HEADER to get only the summary or BlockInfoOptions.Full to get entire block. Default is HEADER
callback -- function to be called upon success
errCallback -- function to be called upon failure
Output
Block Summary or Block object depending on the options specified
jsClientSdk.getBlockInfoByRound(round, options, callback, errCallback)
Use this function to get current information about the blockchain like current roundnumber, average block generation/finalization time, etc
Input Parameters
none
Output
ChainStats --an object that has detailed information about the blockchain.
jsClientSdk.getChainStats()
use this function to get the last finalized block summary.
Input Parameters
None
Output
BlockSummary --object if successful that has information of latest finalized block
jsClientSdk.getLatestFinalized()
Use this function to get summaries of last 10 recently finalized blocks.
Input Parameters
none
Output
array of BlockSummary . --if successful.
jsClientSdk.getRecentFinalized()
The SDK also comes with an example.js file that demonstrates how the APIs can be used.