@ethereumjs/mpt
Version:
Implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.
48 lines • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addHexPrefix = addHexPrefix;
exports.removeHexPrefix = removeHexPrefix;
exports.isTerminator = isTerminator;
/**
* Prepends hex prefix to an array of nibbles.
* @param key - Array of nibbles
* @returns returns buffer of encoded data
**/
function addHexPrefix(key, terminator) {
// odd
if (key.length % 2) {
key.unshift(1);
}
else {
// even
key.unshift(0);
key.unshift(0);
}
if (terminator) {
key[0] += 2;
}
return key;
}
/**
* Removes hex prefix of an array of nibbles.
* @param val - Array of nibbles
* @private
*/
function removeHexPrefix(val) {
if (val[0] % 2) {
val = val.slice(1);
}
else {
val = val.slice(2);
}
return val;
}
/**
* Returns true if hex-prefixed path is for a terminating (leaf) node.
* @param key - a hex-prefixed array of nibbles
* @private
*/
function isTerminator(key) {
return key[0] > 1;
}
//# sourceMappingURL=hex.js.map