Skip to content

Feature Support & Comparison

Taylor Dawson edited this page Jul 24, 2019 · 10 revisions

Details about web3.js & ethers.js

References:

Feature Web3.js Ethers.js Planned for Web3data.js Supported Notes
getAccount ✓ ✓ ✓ blocked
getHashrate ✓ × × -
getGasPrice ✓ ✓ ✓ pending Web3.js returns "20000000000", ethers returns: "20000000000", use endpoint: https://docs.amberdata.io/reference/transactions#get-gas-predictions using fastest or average
Namespace: transactions
getAccounts ✓ ✓ × -
getBlockNumber ✓ ✓ ✓ pending Web3.js — type number, 7280000
Ethers — type number, 7280000
Endpoint— /block/:id using the blocks.current
getBalance ✓ ✓ ✓ pending - partial imp waiting on api Web3.js — type string
Ethers — type BigNumber
Endpoint — /addresses/:hash/account-balances/latest .value
getStorageAt ✓ ✓ × -
getCode ✓ ✓ ✓ pending Web3.js — type string
Ethers — type string
Endpoint— /contracts/:hash .bytecode
getBlock † ✓ ✓ ✓ pending Web3.js — type object response
Ethers — type object response
Endpoint— /blocks/:id?validationMethod=full
getBlockTransactionCount ✓ × ✓ pending Web3.js — type number
Endpoint— /blocks/:id .numTransactions
getUncle † ✓ × ✓ pending Web3.js — type object response
Endpoint— /blocks/:id?validationMethod=full .validations.unlces
This should be evaluated since we just want uncles but it returns a lot of extra data; it also seems like this is subject to change. See AL-1874.
getTransaction † ✓ ✓ ✓ PR #9 Web3.js — type object response
Ethers — type object response
Endpoint— /transactions/:hash
getPendingTransactions ✓ × ✓ PR #9 Web3.js — type object response
Endpoint— /transactions?status=pending
getTransactionFromBlock ✓ × ✓ PR #9 Web3.js — type object response
Endpoint— /blocks/:id/transactions payload.records[index] to retrieve by block and index
getTransactionReceipt ✓ ✓ ? ?
getTransactionCount ✓ ✓ ✓ blocked Web3.js — type number
Ethers — type BigNumber
Endpoint— currently I don't think this is possible
sendTransaction ✓ ✓ × -
sendSignedTransaction ✓ × × -
sign ✓ ✓ × -
signTransaction ✓ ✓ × -
call ✓ ✓ × -
estimateGas ✓ ✓ × -
getPastLogs † ✓ ✓ ✓ blocked Web3.js — type arrayof objects response
Ethers getLogs() — type array of Log objects response
Endpoint— /addresses/:hash/logs
This one is really wonky, web3js gets ALL past logs. ethersjs can only get past logs of a specific contract, same with our endpoint as seen above. Only this /search/logs endpoint can do that.
getWork ✓ × × -
submitWork ✓ × × -
getChainId ✓ ✓ ✓ blocked Web3.js — type string
Ethers — type object network.chainId
Endpoint— ???????????
Contract.getPastEvents ✓ × ✓ blocked Web3.js — type array of objects response
Ethers getLogs() — type array of Log objects response
Endpoint— /addresses/:hash/logs
utils ✓ ✓ ?
getEtherPrice × × ✓ pending Web3.js — type
Ethers — type didn’t see this for ethersjs
Endpoint
getEtherPrice([currency])

† All endpoints return lots of data points that may require direct comparisons.

Websockets

Feature Web3.js Ethers.js Planned for Web3data.js Supported Notes
Contract.on ✓ ✓ ✓ done
Contract.once ✓ ✓ ✓ done
Contract.events.MyEvent ✓ ✓^ ? ? Ethers.js - Only available via filters
Contract.events.allEvents ✓ ✓^ ? ? Ethers.js - Only available via filters

Clone this wiki locally