@jibrelnetwork/contracts-jsapi
v2.0.0
Published
Set of stateless wrapper methods for contracts based on ERC20 token.
Downloads
49
Maintainers
Readme
jibrel-contracts-jsapi
web3 wrapper for jibrel-contracts
About
jibrel-contracts-jsapi is a set of stateless methods that make easier work with Ethereum blockchain, ERC20 Tokens and Jibrel Network contracts.
Get Started
npm install @jibrelnetwork/contracts-jsapi
const jibrelContractsJsapi = require('@jibrelnetwork/contracts-jsapi')
Available npm scripts:
compile:standalone
: build:standalone & minifycompile
: lint & buildclean
: cleans./lib
dirbuild
: cleans & compiles librarybuild:standalone
: builds standalone webpack bundle to test library in browser without including it somewherelint
: check code-style errorsminify
: minifies webpack standalone bundletest
: runs mocha testsdocs
: compile jsdocsdocs:open
: open docs index.html
Public API definitions
See mocha tests for examples of usage
ETH
API
web3.eth functions wrapper
eth.sendTransaction(props)
Sends transaction. Returns Promise that will be resolved with the hash of created transaction.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- privateKey: Private key (64 hex symbols, without '0x' prefix)
- to: Address of the transaction receiver
- value: Transaction value
- gasLimit: (optional) Gas limit for the transaction
- gasPrice: (optional) Gas price for the transaction
- nonce: (optional) Nonce for the transaction
- data: (optional) Transaction data
- ssl: (optional) Defines using of ssl for connection or not
eth.getBalance(props)
Returns Promise that will be resolved with balance of the provided address.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- address: Address to check balance
- defaultBlock: (optional) Redefines of web3.eth.defaultBlock
- ssl: (optional) Defines using of ssl for connection or not
eth.getBlockNumber(props)
Returns Promise that will be resolved with current block number.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- ssl: (optional) Defines using of ssl for connection or not
eth.getBlock(props)
Returns Promise that will be resolved with block data.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- blockId: (optional) Block number or hash. Or the string "earliest"/"latest"/"pending"
- returnTransactionObjects: (optional) Return all transactions as objects if true
- ssl: (optional) Defines using of ssl for connection or not
eth.getTransaction(props)
Returns Promise that will be resolved with transaction data.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- transactionHash: Transaction hash
- ssl: (optional) Defines using of ssl for connection or not
eth.getTransactionReceipt(props)
Returns Promise that will be resolved with transaction receipt.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- transactionHash: Transaction hash
- ssl: (optional) Defines using of ssl for connection or not
eth.getLogsFilter(props)
Returns Promise that will be resolved with filter object, that can be used for getting of past logs or watching of new.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- options: (optional) Event options
- fromBlock: (optional) The number of the earliest block
- toBlock: (optional) The number of the latest block
- address: (optional) An address(es) to get logs from
- topics: (optional) Allows to manually set the topics for the event filter
- ssl: (optional) Defines using of ssl for connection or not
eth.getPastLogs(props)
Returns Promise that will be resolved with past logs.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- options: (optional) Event options
- fromBlock: (optional) The number of the earliest block
- toBlock: (optional) The number of the latest block
- address: (optional) An address(es) to get logs from
- topics: (optional) Allows to manually set the topics for the event filter
- ssl: (optional) Defines using of ssl for connection or not
eth.estimateGas(props)
Returns Promise that will be resolved with estimate gas value.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- to: Address of the transaction receiver
- value: Transaction value
- data: (optional) Transaction data
- ssl: (optional) Defines using of ssl for connection or not
eth.getGasPrice(props)
Returns Promise that will be resolved with current gas price value.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- ssl: (optional) Defines using of ssl for connection or not
eth.getNonce(props)
Returns Promise that will be resolved with current transaction count value for address specified
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- ssl: (optional) Defines using of ssl for connection or not
- address: Address to get transaction count
- defaultBlock: (optional) Redefines of web3.eth.defaultBlock
ERC20
API
contracts.erc20.totalSupply(props)
Returns Promise that will be resolved with the total supply of tokens.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- ssl: (optional) Defines using of ssl for connection or not
contracts.erc20.balanceOf(props)
Returns Promise that will be resolved with the balance of owner address
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- owner: Address to check balance
- ssl: (optional) Defines using of ssl for connection or not
contracts.erc20.transfer(props)
Transfers tokens. Returns Promise that will be resolved with the hash of created contract transaction
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- privateKey: Private key (64 hex symbols, without '0x' prefix)
- to: Address of the transaction receiver
- value: Transaction value
- gasLimit: (optional) Gas limit for the transaction
- gasPrice: (optional) Gas price for the transaction
- nonce: (optional) Nonce for the transaction
- ssl: (optional) Defines using of ssl for connection or not
contracts.erc20.allEvents(props)
Subscribes to all contract events. Returns Promise that will be resolved with the event emitter.
The event emitter has the following events:
data
: Fires on each incoming event with the event object as argumenterror
: Fires when an error in the subscription occours
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- options: (optional) Event options
- filter: (optional) Filter options by indexed event parameters
- fromBlock: (optional) The number of the earliest block
- toBlock: (optional) The number of the latest block
- address: (optional) An address(es) to get logs from
- topics: (optional) Allows to manually set the topics for the event filter
- callback: (optional) Callback which fired for each event or error
- ssl: (optional) Defines using of ssl for connection or not
contracts.erc20.Transfer(props)
Subscribes to Transfer event. Returns Promise that will be resolved with the event emitter (the same as for allEvents).
props
The same as for allEvents
contracts.erc20.getPastEvents(props)
Returns Promise that will be resolved with the past event logs.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- event: optional Event name
- options: (optional) The same options as for allEvents
- ssl: (optional) Defines using of ssl for connection or not
contracts.erc20.estimateGas(props)
Returns Promise that will be resolved with estimate gas value.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- from: Transaction sender address
- method: Method name
- args: Method arguments
- ssl: (optional) Defines using of ssl for connection or not
ERC20Mintable
API
contracts.erc20Mintable.allEvents(props)
contracts.erc20Mintable.MintEvent(props)
Subscribes to MintEvent event. Returns Promise that will be resolved with the event emitter (the same as for allEvents).
contracts.erc20Mintable.BurnEvent(props)
Subscribes to BurnEvent event. Returns Promise that will be resolved with the event emitter (the same as for allEvents).
contracts.erc20Mintable.getPastEvents(props)
See contracts.erc20.getPastEvents
ERC20Named
API
contracts.erc20Named.name(props)
Returns Promise that will be resolved with the token name.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- ssl: (optional) Defines using of ssl for connection or not
contracts.erc20Named.symbol(props)
Returns Promise that will be resolved with the token symbol.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- ssl: (optional) Defines using of ssl for connection or not
contracts.erc20Named.decimals(props)
Returns Promise that will be resolved with token decimals.
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- ssl: (optional) Defines using of ssl for connection or not
Controller
API
contracts.controller.mint(props)
Mint tokens. Returns Promise that will be resolved with the hash of created contract transaction
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- privateKey: Private key (64 hex symbols, without '0x' prefix)
- account: Address of account to mint tokens to
- value: Transaction value
- gasLimit: (optional) Gas limit for the transaction
- gasPrice: (optional) Gas price for the transaction
- nonce: (optional) Nonce for the transaction
- ssl: (optional) Defines using of ssl for connection or not
contracts.controller.burn(props)
Burn tokens. Returns Promise that will be resolved with the hash of created contract transaction
props
- rpcaddr: RPC address of Ethereum node to connect on
- rpcport: RPC port of Ethereum node to connect on
- contractAddress: Contract address
- privateKey: Private key (64 hex symbols, without '0x' prefix)
- account: Address of account to burn tokens from
- value: Transaction value
- gasLimit: (optional) Gas limit for the transaction
- gasPrice: (optional) Gas price for the transaction
- nonce: (optional) Nonce for the transaction
- ssl: (optional) Defines using of ssl for connection or not
getAddressFromPrivateKey(privateKey)
Gets account's address from its private key.
- privateKey: Private key (64 hex symbols, without '0x' prefix)
Testing
Testrpc should be launched before tests.
Also JSON_PATH
env variable should exists. JSON_PATH
stores path to .json file, that contains:
- account addresses
- private keys
- contract addresses
The simplest way to test
- is launch jibrel-contracts tests. During tests execution it will check that jibrel-contracts-jsapi project is in the same dir, and will agregate all need information and write it to .json file.
Steps to launch tests from jibrel-contracts
Note: prepare jibrel-contracts-jsapi project (npm i && npm run compile
)
$ git clone [email protected]:jibrelnetwork/jibrel-contracts.git
$ cd jibrel-contracts
$ git pull origin master
$ git reset --hard e3c917eadcabddef00ab3acd45791c1c456787dd
$ npm i
$ npm run compile
$ npm test