PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/bip174/src/lib/converter/output
Просмотр файла: tapTree.js
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
const typeFields_1 = require('../../typeFields');
const varuint = require('../varint');
function decode(keyVal) {
if (
keyVal.key[0] !== typeFields_1.OutputTypes.TAP_TREE ||
keyVal.key.length !== 1
) {
throw new Error(
'Decode Error: could not decode tapTree with key 0x' +
keyVal.key.toString('hex'),
);
}
let _offset = 0;
const data = [];
while (_offset < keyVal.value.length) {
const depth = keyVal.value[_offset++];
const leafVersion = keyVal.value[_offset++];
const scriptLen = varuint.decode(keyVal.value, _offset);
_offset += varuint.encodingLength(scriptLen);
data.push({
depth,
leafVersion,
script: keyVal.value.slice(_offset, _offset + scriptLen),
});
_offset += scriptLen;
}
return { leaves: data };
}
exports.decode = decode;
function encode(tree) {
const key = Buffer.from([typeFields_1.OutputTypes.TAP_TREE]);
const bufs = [].concat(
...tree.leaves.map(tapLeaf => [
Buffer.of(tapLeaf.depth, tapLeaf.leafVersion),
varuint.encode(tapLeaf.script.length),
tapLeaf.script,
]),
);
return {
key,
value: Buffer.concat(bufs),
};
}
exports.encode = encode;
exports.expected =
'{ leaves: [{ depth: number; leafVersion: number, script: Buffer; }] }';
function check(data) {
return (
Array.isArray(data.leaves) &&
data.leaves.every(
tapLeaf =>
tapLeaf.depth >= 0 &&
tapLeaf.depth <= 128 &&
(tapLeaf.leafVersion & 0xfe) === tapLeaf.leafVersion &&
Buffer.isBuffer(tapLeaf.script),
)
);
}
exports.check = check;
function canAdd(currentData, newData) {
return !!currentData && !!newData && currentData.tapTree === undefined;
}
exports.canAdd = canAdd;
Выполнить команду
Для локальной разработки. Не используйте в интернете!