PHP WebShell
Текущая директория: /opt/BitGoJS/modules/utxo-core/src/descriptor/psbt
Просмотр файла: wrap.ts
import { Psbt as WasmPsbt } from '@bitgo/wasm-miniscript';
import * as utxolib from '@bitgo/utxo-lib';
export function toWrappedPsbt(psbt: utxolib.bitgo.UtxoPsbt | utxolib.Psbt | Buffer | Uint8Array): WasmPsbt {
if (psbt instanceof utxolib.bitgo.UtxoPsbt || psbt instanceof utxolib.Psbt) {
psbt = psbt.toBuffer();
}
if (psbt instanceof Buffer || psbt instanceof Uint8Array) {
return WasmPsbt.deserialize(psbt);
}
throw new Error('Invalid input');
}
export function toUtxoPsbt(psbt: WasmPsbt | Buffer | Uint8Array, network: utxolib.Network): utxolib.bitgo.UtxoPsbt {
if (psbt instanceof WasmPsbt) {
psbt = psbt.serialize();
}
if (psbt instanceof Buffer || psbt instanceof Uint8Array) {
return utxolib.bitgo.UtxoPsbt.fromBuffer(Buffer.from(psbt), { network });
}
throw new Error('Invalid input');
}
/**
* Use `wasm-miniscript` to finalize a PSBT.
* Miniscript based finalization is more powerful than bitcoinjs-lib's / utxo-lib's finalization
* and can finalize more complex scripts (e.g. miniscript descriptors).
* @param psbt
*/
export function finalizePsbt(psbt: utxolib.bitgo.UtxoPsbt): void {
if (utxolib.getMainnet(psbt.network) !== utxolib.networks.bitcoin) {
throw new Error('only bitcoin and testnet are supported');
}
const wrappedPsbt = toWrappedPsbt(psbt);
wrappedPsbt.finalize();
const unwrappedPsbt = toUtxoPsbt(wrappedPsbt, psbt.network);
for (let i = 0; i < psbt.data.inputs.length; i++) {
psbt.data.inputs[i] = unwrappedPsbt.data.inputs[i];
}
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!