RSK API, accesing a running node using JSON RPC. It's a simple replacement to the usual web3 interface.
This is a personal project, not related with or endorsed by RSK.
Via npm on Node:
npm install rskapi
Create the RSK API Object by calling the host function.
const rskapi = require('rskapi');
const client = rskapi.client('http://host.to.node.com:PORT');
/** operations with the node **/
Examples:
const client = rskapi.client('http://localhost:8545') // ie ganache-client
// or
const client = rskapi.client('http://localhost:4444') // local rsk regtest
// or
const client = rskapi.client('https://public-node.testnet.rsk.co:443') // rsk testnet public node
// or
const client = rskapi.client('https://public-node.rsk.co:443') // rsk mainnet public node
Given a client object, it can be invoked using a callback or as promise:
// get best block number
console.log(await client.number());
// or
client.number(function (err, number) {
if (err)
console.log('error', err);
else
console.log(number);
});
In the following descriptions, a promise is used.
const number = await client.number();
const accounts = await client.accounts();
const balance = await client.balance(address);
const nonce = await client.nonce(address);
const tx = await client.transaction(hash);
const tx = await client.receipt(hash, nseconds);
where nseconds
is the number of seconds to try (one request per second). If zero,
it waits forever.
const txhash = await client.transfer(sender, receiver, value, options);
sender
and receiver
are accounts, represented by their public address, or
by an object with address
and privateKey
properties.
options
is an object with properties like gas
, gasPrice
and nonce
.
If no nonce is provided, the next nonce available for the sender will be use.
If no gas price is provided, the one informed by the host will be used.
const txhash = await client.deploy(sender, bytecodes, args, options);
sender
is an account (an address or an object with properties address
and privateKey
).
bytecodes
is an hexadecimal string starting with 0x
.
args
is an array with the constructor arguments. It could be null
.
options
is an object with properties like gas
, gasPrice
, value
and nonce
.
If no nonce is provided, the next nonce available for the sender will be use.
If no gas price is provided, the one informed by the host will be used.
const txhash = await client.invoke(sender, receiver, fn, args, options);
sender
is an account (an address or an object with properties address
and privateKey
).
receiver
is the address of a contract already deployed.
fn
is an string with the full function signature to invoke, ie transfer(address,uint256)
.
args
is an array with the function arguments.
options
is an object with properties like gas
, gasPrice
, value
and nonce
.
If no nonce is provided, the next nonce available for the sender will be use.
If no gas price is provided, the one informed by the host will be used.
const txhash = await client.call(sender, receiver, fn, args, options);
sender
is an account (an address or an object with properties address
and privateKey
).
receiver
is the address of a contract already deployed.
fn
is an string with the full function signature to invoke, ie transfer(address,uint256)
.
args
is an array with the function arguments.
options
is an object with properties like value
.
Being a call query and not a transaction, no gasPrice
, gas
or nonce
is
needed.
- Web3 JavaScript app API
- Web3 documentation
- JSON RPC
- How to generate Private key, public key and address
Some simple samples at https://github.com/ajlopez/RskApi/tree/master/samples/simple.
Some simple commands using a configuration file at https://github.com/ajlopez/RskApi/tree/master/samples/commands.
- 0.0.1 initial version
- 0.0.2 callTransaction
- 0.0.3 fix duration encoding in unlock account
- 0.0.4 using simplejsonrpc 0.0.3
- 0.0.5 sending second argument in getBalance
- 0.0.6 sending transaction normalized data
- 0.0.7 exposing JSON RPC provider
- 0.0.8 using simplejsonrpc 0.0.4 with https support
- 0.0.9 send raw transaction
- 0.0.10 support async/await; using simplejsonrpc 0.0.6
- 0.0.11 new trace commands; get block using pending, latests, earlier
- 0.0.12 get logs; client with transfer, deploy, invoke, call, generate account
- 0.0.13 first utils; get nonce using pending
- 0.0.14 client get storage, get peer list, get peer count, get scoring list, format addresses and values
- 0.0.15 improved
client.block
, get balance using block, get nonce using block, encode big integers - 0.0.16 personal account functions, import raw key
- 0.0.17 deploy method with constructor types in options, client number of blocks
- 0.0.18 create account from private key, client and host estimate gas
- 0.0.19 estimate transfer, using simpleabi@0.0.8
- 0.0.20 using simpleabi@0.0.9
- Update browser version
- deploy command with constructor types
- block height parameter in some methods
Feel free to file issues and submit pull requests — contributions are welcome.
If you submit a pull request, please be sure to add or update corresponding
test cases, and ensure that npm test
continues to pass.