@btc-vision/transaction
Version:
OPNet transaction library allows you to create and sign transactions for the OPNet network.
37 lines • 1.16 kB
JavaScript
import { varuint } from '@btc-vision/bitcoin';
/**
* Convert witness stack to script witness buffer
* @param {Uint8Array[]} witness - The witness stack
* @returns {Uint8Array}
*/
export function witnessStackToScriptWitness(witness) {
let buffer = new Uint8Array(0);
function concatBuffers(a, b) {
const result = new Uint8Array(a.length + b.length);
result.set(a, 0);
result.set(b, a.length);
return result;
}
function writeSlice(slice) {
buffer = concatBuffers(buffer, slice);
}
function writeVarInt(i) {
const currentLen = buffer.length;
const varintLen = varuint.encodingLength(i);
const newBuffer = new Uint8Array(currentLen + varintLen);
newBuffer.set(buffer, 0);
buffer = newBuffer;
varuint.encode(i, buffer, currentLen);
}
function writeVarSlice(slice) {
writeVarInt(slice.length);
writeSlice(slice);
}
function writeVector(vector) {
writeVarInt(vector.length);
vector.forEach(writeVarSlice);
}
writeVector(witness);
return buffer;
}
//# sourceMappingURL=WitnessUtils.js.map