Skip to content

Instantly share code, notes, and snippets.

@wildmolasses
Last active May 26, 2018 17:26
Show Gist options
  • Save wildmolasses/51a9f1ae0759cd1bbf0961f4a455fb53 to your computer and use it in GitHub Desktop.
Save wildmolasses/51a9f1ae0759cd1bbf0961f4a455fb53 to your computer and use it in GitHub Desktop.
const rlp = require('rlp');
const Trie = require('merkle-patricia-tree');
const levelup = require('levelup');
const memdown = require('memdown');
let db = levelup(memdown());
let trie = new Trie(db);
let expectedTxRoot = new Buffer('b10b6aa0bc1357b4b43be1804fc169ce3daf247867faa51656b9e44941ec7edc', 'hex');
let rawTx = ['f86d80850ba43b740083030d4094120a270bbc009644e35f0bb6ab13f95b8199c4ad88543cf8d6fa9f0000801ca0697e5b9a7d7497b8ac23ca8705751c9cdc3bca44d98bcea27faef85b067fdb8ba02245e3ebee100ea8be37d6487e975a5ed9ed850cf693c8a97760051cff7d2987',
'f86e820108850ba43b74008252089432be343b94f860124dc4fee278fdcbd38c102d88880de042e553f8ac00801ca0d9508fb924a2e879c99439c3faee1ed40a9cd9223526aed7f689fabf19a54cc7a055a0a397701a97d896f5a080fb159228accd252659dd8c994393d8cb59b19a84']
let makeTrie = (rawTx) => {
return new Promise((cb) => {
let batch = rawTx.map((txHash, i) => {
return { type: 'put', key: rlp.encode(i), value: new Buffer(txHash, 'hex') }
});
trie.batch(batch, (err) => {
if(err) console.log(err);
cb();
});
});
}
makeTrie(rawTx).then(() => {
console.log(`do the trie roots match?\nAnswer: ${trie.root.equals(expectedTxRoot)}`);
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment