web3-ebakus
Extend Web3 functionality for Ebakus blockchain.
Installation
Node.js
npm install --save web3-ebakus
In the Browser
Load it from CDN:
You can find what is the latest version number of the library here. The script tag above to
unpkg.com
points to latest endpoint which does a redirect.
or build running the following from the root folder of the repository:
npm run-script build
Then include lib/web3-ebakus.browser.min.js
in your html file.
This will expose the Web3Ebakus
object on the window object.
Requirements
- Web3 ^1.2.0
Usage
const web3 =
You can also have a look at the example page.
Additionally you can use the library with web3-provider-engine. Check this section.
Methods
web3.eth.suggestDifficulty(accountAddress)
The suggestDifficulty
queries the node for the suggested target difficulty needed for the PoW in order for a transaction to enter a block taking into account current congestion levels and address stake. The difficulty will be used in calculateWorkForTransaction
.
web3eth
web3.eth.calculateWorkForTransaction(transaction, targetDifficulty, ctrlWorkForTransactionState, callback)
The calculateWorkForTransaction
calculates the PoW needed for a transaction to enter a block by a block producer.
const tx = /* transaction object */web3eth
is also available for
Account
objects, which is useful for chaining
The ctrlWorkForTransactionState
and callback
parameters are optional.
-
ctrlWorkForTransactionState
: this is an object that will be populated with some useful methods when passed.isRunning()
: state of workergetCurrentWorkNonce()
: returns the current workNonce while worker is runningkill()
: kills the worker
Example:
let ctrl = {}// log worker state every 500msconst logger =// kill worker after 3seconds// setTimeout(() => {// ctrl.kill();// }, 3000);web3eth -
callback
: you can read more here
web3.eth.estimatePoWTime(targetDifficulty, gas, callback)
The estimatePoWTime
estimates how much time the current hardware will take for doing PoW based on target difficulty and transaction gas.
web3eth
targetDifficulty
: this is the target difficulty to achieve so as transaction gets produced. (default = 2)gas
: this is the transaction gas. (default = 21000)callback
: you can read more here
web3.eth.getAbiForAddress(contractAddress)
The getAbiForAddress
returns the ABI for a contract, if this has been set by the developer.
web3eth
web3.eth.getStaked(accountAddress, blockNumber)
The getStaked
returns the staked amount for an account.
accountAddress
: the account address.blockNumber
: block number from which to read the staked amount. You can uselatest
string for fetching from latest block.
web3eth
web3.db.select(contractAddress, tableName, whereCondition, orderByColumn, blockNumber)
The db.select
allows performing selects with conditions ordered by column name.
contractAddress
: contract address that created the DB tablestableName
: table namewhereClause
: where condition for finding an entry Supported conditions are "<", ">", "=", "==", "<=", ">=", "!=", "LIKE" Example use case: Phone = "555-1111" Id >= 3orderClause
: order clause for sorting the results using "ASC" or "DESC" Example use case: Phone DESCblockNumber
: block number to read from EbakusDB state. You can uselatest
string for fetching from latest block.
web3db
web3.db.next(iter)
The db.next
returns the next result of the select performed through web3.db.select()
.
web3.db.releaseIterator(iter)
The db.releaseIterator
should be called once, if not all iterator entries has been read using db.next
, in order the iterator taken from db.select
to be released.
web3.db.get(contractAddress, tableName, whereCondition, orderByColumn, blockNumber)
The db.get
allows fetching a single item. Check for its params at web3.db.select()
.
web3db
web3-provider-engine
Usage with The web3-ebakus
can be loaded as a subprovider of web3-provider-engine
. For doing this you can load the subprovider from web3-ebakus/lib/web3-ebakus.web3-subprovider.node.js
for targeting node.js or from web3-ebakus/lib/web3-ebakus.web3-subprovider.esm.js
for targeting web. Check the following example code:
const Web3 = const ProviderEngine = const Web3EbakusSubprovider = const web3 = 'https://rpc.ebakus-testnet.com' const engine = const web3ebakus = web3: web3 engine // ... add more providers as needed enginestart web3