☠️ Ethereum Node focused on Developer Experience
Ethereum Node focused on Developer Experience
evm_snapshot
), time manipulation (evm_increaseTime
), mining control (evm_mine
)Note: current features represent just a gist of what we want to accomplish
npm install --save-dev deth
deth [config]
Sample config (we support only .js
configs for now):
const BN = require('bn.js')
module.exports = {
blockchain: {
accounts: {
privateKeys: [
'0x47be2b1589bb515b76b47c514be96b23cd60ee37e81d63c2ae9c92f7d7667e1a',
'0x72a4d3589099f14b31725dee59b186419bac41c42d2d02b2c70c1a8af2a2b6bb',
'0x1ff8271bf14ac9bef0b641cced40dc2a7ebd2e37d8e16d25b4aa1911364219af',
'0x1444ab10c1d1e8aabb89534218854df60d90bb45f39b55634777461d5a465e2e',
'0xbff5647520d5e327178330ec0085ab27a58fb26ecb942f770397a940fa5c5d29',
'0x8db53d08e85593ffb623e89e352bfed4eea350e6cc9812f11eac4de576f3cfda',
'0x24e467ab36f3cf70767135775ec1f7cc2a8b17363055e548113d85072136f945',
'0xc3bc1a16a82622f9bddf48f8e754c98092755e2e3782aafdca4ce21a1082747f',
'0xe54c55b3c5d80d445841afa3141e52592bec8523d8993d8df1811bfc5bf64d59',
'0x48ee1f88167591357bb6780cbc09bc01e2a93d439e789d44261bf747034164e0'
],
initialBalance: new BN(10000).pow(new BN(18))
},
chainId: 420
},
debugger: {
abiFilesGlob: '../contracts/**/out/*.abi'
}
}
NOTE: debugger > abiFilesGlob
.
You can find defaults here
Currently it uses forked ethereumjs-vm
as a virtual machine but we evaluate other designs (like writing our own VM). Our state manager and blockchain is entirely in memory, without usage of merkle patricia trees. Snapshots are implemented simply as deep copy which makes our snapshot mechanism much more reliable than one used in Ganache
.