Subset of original Web3 API with additional certainty checks. I.e. wait for some confirmations (new blocks) before triggering the callback.
// Import the library
import {FirmWeb3, Certainty} from 'firm.web3';
// Create new `FirmWeb3` passing existing `web3` instance.
let firmWeb3 = new FirmWeb3(global.web3);
// Change certainty level (default MEDIUM=4 blocks)
firmWeb3 = firmWeb3.withCertainty(Certainty.HIGH); // wait for 12 blocks
// send transaction and wait for receipt
web3.eth.sendTransaction({...}, (err, txHash) => {
console.log('Transaction sent.');
// wait for receipt with sufficient confirmations count
firmWeb3.getTransactionReceipt(txHash, (err, receipt) => {
console.log('Transaction has 12 confirmations.');
});
});or without ES2015:
// Import the library
var firmWeb3 = require('firm.web3');
// Create new `FirmWeb3` passing existing `web3` instance.
var firmWeb3 = new firmWeb3.FirmWeb3(global.web3);
// Change certainty level (default MEDIUM=4 blocks)
firmWeb3 = firmWeb3.withCertainty(firmWeb3.Certainty.HIGH); // wait for 12 blocks
// send transaction and wait for receipt
web3.eth.sendTransaction({...}, function (err, txHash) {
console.log('Transaction sent.');
// wait for receipt with sufficient confirmations count
firmWeb3.getTransactionReceipt(txHash, function (err, receipt) {
console.log('Transaction has 12 confirmations.');
});
});firmWeb3.withCertainty(level)- returns a new instance with given certaintylevel(Certainty.{LOW(2 blocks), MEDIUM(4), HIGH(12)}or just number of blocks),firmWeb3.getTransactionReceipt(hash, callback)- gets a receipt for givenhash(will retry up to 24 blocks),firmWeb3.getCode(address, callback)- gets contract code under givenaddress(will retry up to 24 blocks),firmWeb3.filter(filterOptions)- returns a new logs (events) filter,firmWeb3.contract(abiArray)- returns a new contract factory.
filter.withCertainty(level)- returns a new filter with changed certaintylevel,filter.get(callback)- gets current "firm" logs (logs coming from blocklatest - confirmationLevel),filter.watch(callback)- fires a callback for each new logs specified in filter and happening in blocklatest - confirmationLevel,filter.stopWatching()- stops watching and uninstall filter.
contractF.at(address)- returns contract with current ABI bound to givenaddress,contractF.new([...args,] callback)- deploys contract with current ABI and calls back withFirmContract.
contract.withCertainty(level)- returns a new contract with different certaintylevel,contract.allEvents([filterOptions] [, callback])- returns a filter for all events hapening in contractcontract.[eventName]([filterValues] [, filterOptions] [, callback])- returns a filter for specific event in contract
Parameters values are the same as specified here: JavaScript API
- Better retries handling (each block instead of timeout)
- Information about progress
