Extend Web3 functionality for Ebakus blockchain.
npm install --save web3-ebakus
Build running the following from the root folder of the repository:
npm run-script build
Then include lib/web3-ebakus.browser.js
in your html file.
This will expose the Web3Ebakus
object on the window object.
- Web3 ^1.2.0
import Web3Ebakus from 'web3-ebakus'
import Web3 from 'web3'
const web3 = Web3Ebakus(new Web3())
You can also have a look at the example page.
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
.
web3.eth
.suggestDifficulty(accountAddress)
.then(difficulty => console.log(difficulty))
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 */
}
web3.eth.calculateWorkForTransaction(tx, /* targetDifficulty */ 1).then(tx => {
/* do something with tx */
})
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 500ms const logger = setInterval(() => { console.log('isRunning', ctrl.isRunning()) console.log('getCurrentWorkNonce', ctrl.getCurrentWorkNonce()) // stop logging once worker finished if (!ctrl.isRunning()) { clearInterval(logger) } }, 500) // kill worker after 3seconds // setTimeout(() => { // ctrl.kill(); // }, 3000); web3.eth.calculateWorkForTransaction(transaction, 1, ctrl).then(tx => { /* do something with tx */ })
-
callback
: you can read more here
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.
web3.db.select(contractAddress, tableName, whereCondition, orderByColumn, blockNumber)
.then(iterator =>
web3.db.next(iter).then(entry => console.log(entry)
)
The db.next
returns the next result of the select performed through web3.db.select()
.
The db.get
allows fetching a single item. Check for its params at web3.db.select()
.
web3.db
.get(contractAddress, tableName, whereCondition, orderByColumn, blockNumber)
.then(entry => console.log(entry))