@btc-vision/bitcoin 7.0.0-alpha.1 → 7.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/address.d.ts +5 -1
- package/browser/address.d.ts.map +1 -1
- package/browser/branded.d.ts +3 -14
- package/browser/branded.d.ts.map +1 -1
- package/browser/ecc/context.d.ts.map +1 -1
- package/browser/index.d.ts +2 -1
- package/browser/index.d.ts.map +1 -1
- package/browser/index.js +2964 -2919
- package/browser/opcodes.d.ts +11 -0
- package/browser/opcodes.d.ts.map +1 -1
- package/browser/psbt/PsbtCache.d.ts +54 -0
- package/browser/psbt/PsbtCache.d.ts.map +1 -0
- package/browser/psbt/PsbtFinalizer.d.ts +21 -0
- package/browser/psbt/PsbtFinalizer.d.ts.map +1 -0
- package/browser/psbt/PsbtSigner.d.ts +32 -0
- package/browser/psbt/PsbtSigner.d.ts.map +1 -0
- package/browser/psbt/PsbtTransaction.d.ts +25 -0
- package/browser/psbt/PsbtTransaction.d.ts.map +1 -0
- package/browser/psbt/types.d.ts +13 -13
- package/browser/psbt/types.d.ts.map +1 -1
- package/browser/psbt/validation.d.ts +1 -1
- package/browser/psbt/validation.d.ts.map +1 -1
- package/browser/psbt.d.ts +27 -39
- package/browser/psbt.d.ts.map +1 -1
- package/browser/script.d.ts.map +1 -1
- package/browser/transaction.d.ts +4 -4
- package/browser/transaction.d.ts.map +1 -1
- package/browser/types.d.ts +4 -2
- package/browser/types.d.ts.map +1 -1
- package/browser/workers/index.d.ts +3 -50
- package/browser/workers/index.d.ts.map +1 -1
- package/browser/workers/index.node.d.ts +24 -0
- package/browser/workers/index.node.d.ts.map +1 -0
- package/build/address.d.ts +5 -1
- package/build/address.d.ts.map +1 -1
- package/build/address.js +29 -17
- package/build/address.js.map +1 -1
- package/build/branded.d.ts +3 -14
- package/build/branded.d.ts.map +1 -1
- package/build/branded.js +0 -5
- package/build/branded.js.map +1 -1
- package/build/ecc/context.d.ts.map +1 -1
- package/build/ecc/context.js +68 -45
- package/build/ecc/context.js.map +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/opcodes.d.ts +11 -0
- package/build/opcodes.d.ts.map +1 -1
- package/build/opcodes.js +19 -4
- package/build/opcodes.js.map +1 -1
- package/build/psbt/PsbtCache.d.ts +54 -0
- package/build/psbt/PsbtCache.d.ts.map +1 -0
- package/build/psbt/PsbtCache.js +249 -0
- package/build/psbt/PsbtCache.js.map +1 -0
- package/build/psbt/PsbtFinalizer.d.ts +21 -0
- package/build/psbt/PsbtFinalizer.d.ts.map +1 -0
- package/build/psbt/PsbtFinalizer.js +157 -0
- package/build/psbt/PsbtFinalizer.js.map +1 -0
- package/build/psbt/PsbtSigner.d.ts +32 -0
- package/build/psbt/PsbtSigner.d.ts.map +1 -0
- package/build/psbt/PsbtSigner.js +192 -0
- package/build/psbt/PsbtSigner.js.map +1 -0
- package/build/psbt/PsbtTransaction.d.ts +25 -0
- package/build/psbt/PsbtTransaction.d.ts.map +1 -0
- package/build/psbt/PsbtTransaction.js +61 -0
- package/build/psbt/PsbtTransaction.js.map +1 -0
- package/build/psbt/types.d.ts +13 -13
- package/build/psbt/types.d.ts.map +1 -1
- package/build/psbt/validation.d.ts +1 -1
- package/build/psbt/validation.d.ts.map +1 -1
- package/build/psbt.d.ts +27 -39
- package/build/psbt.d.ts.map +1 -1
- package/build/psbt.js +139 -746
- package/build/psbt.js.map +1 -1
- package/build/script.d.ts.map +1 -1
- package/build/script.js +2 -2
- package/build/script.js.map +1 -1
- package/build/transaction.d.ts +4 -4
- package/build/transaction.d.ts.map +1 -1
- package/build/transaction.js +5 -4
- package/build/transaction.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/build/types.d.ts +4 -2
- package/build/types.d.ts.map +1 -1
- package/build/types.js +9 -0
- package/build/types.js.map +1 -1
- package/build/workers/WorkerSigningPool.js +1 -1
- package/build/workers/WorkerSigningPool.js.map +1 -1
- package/build/workers/index.d.ts +3 -3
- package/build/workers/index.d.ts.map +1 -1
- package/build/workers/index.js +0 -3
- package/build/workers/index.js.map +1 -1
- package/build/workers/index.node.d.ts +24 -0
- package/build/workers/index.node.d.ts.map +1 -0
- package/build/workers/index.node.js +26 -0
- package/build/workers/index.node.js.map +1 -0
- package/package.json +28 -9
- package/src/address.ts +41 -18
- package/src/branded.ts +15 -13
- package/src/ecc/context.ts +75 -57
- package/src/index.ts +36 -1
- package/src/opcodes.ts +21 -4
- package/src/psbt/PsbtCache.ts +325 -0
- package/src/psbt/PsbtFinalizer.ts +213 -0
- package/src/psbt/PsbtSigner.ts +302 -0
- package/src/psbt/PsbtTransaction.ts +82 -0
- package/src/psbt/types.ts +13 -13
- package/src/psbt/validation.ts +1 -1
- package/src/psbt.ts +299 -1090
- package/src/script.ts +2 -2
- package/src/transaction.ts +9 -8
- package/src/types.ts +13 -0
- package/src/workers/WorkerSigningPool.ts +1 -1
- package/src/workers/index.node.ts +27 -0
- package/src/workers/index.ts +7 -9
- package/test/address.spec.ts +2 -2
- package/test/bitcoin.core.spec.ts +5 -2
- package/test/browser/payments.spec.ts +151 -0
- package/test/browser/psbt.spec.ts +1510 -0
- package/test/browser/script.spec.ts +223 -0
- package/test/browser/setup.ts +13 -0
- package/test/browser/workers-signing.spec.ts +537 -0
- package/test/crypto.spec.ts +2 -2
- package/test/fixtures/core/base58_encode_decode.json +12 -48
- package/test/fixtures/core/base58_keys_invalid.json +50 -150
- package/test/fixtures/core/sighash.json +1 -3
- package/test/fixtures/core/tx_valid.json +133 -501
- package/test/fixtures/embed.json +3 -11
- package/test/fixtures/p2ms.json +21 -91
- package/test/fixtures/p2pk.json +5 -24
- package/test/fixtures/p2pkh.json +7 -36
- package/test/fixtures/p2sh.json +8 -54
- package/test/fixtures/p2tr.json +2 -6
- package/test/fixtures/p2wpkh.json +7 -36
- package/test/fixtures/p2wsh.json +14 -59
- package/test/fixtures/psbt.json +2 -6
- package/test/fixtures/script.json +12 -48
- package/test/integration/addresses.spec.ts +11 -5
- package/test/integration/bip32.spec.ts +1 -1
- package/test/integration/cltv.spec.ts +10 -6
- package/test/integration/csv.spec.ts +10 -9
- package/test/integration/payments.spec.ts +8 -4
- package/test/integration/taproot.spec.ts +26 -6
- package/test/integration/transactions.spec.ts +22 -8
- package/test/payments.spec.ts +1 -1
- package/test/payments.utils.ts +1 -1
- package/test/psbt.spec.ts +250 -64
- package/test/script_signature.spec.ts +1 -1
- package/test/transaction.spec.ts +18 -5
- package/test/tsconfig.json +6 -20
- package/test/workers-pool.spec.ts +22 -23
- package/test/workers-signing.spec.ts +7 -3
- package/test/workers.spec.ts +6 -7
- package/typedoc.json +11 -1
- package/vitest.config.browser.ts +68 -0
- package/browser/ecpair.d.ts +0 -99
- package/src/ecpair.d.ts +0 -99
- package/test/taproot-cache.spec.ts +0 -694
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { checkForInput } from 'bip174';
|
|
2
|
+
import { equals, toHex } from '../io/index.js';
|
|
3
|
+
import * as payments from '../payments/index.js';
|
|
4
|
+
import { tapleafHash } from '../payments/bip341.js';
|
|
5
|
+
import { toXOnly } from '../pubkey.js';
|
|
6
|
+
import { isP2WPKH, pubkeyInScript } from './psbtutils.js';
|
|
7
|
+
import { getMeaningfulScript, sighashTypeToString } from './utils.js';
|
|
8
|
+
import { checkScriptForPubkey } from './validation.js';
|
|
9
|
+
import { Transaction } from '../transaction.js';
|
|
10
|
+
/**
|
|
11
|
+
* Class wrapping all signing-related logic for PSBT.
|
|
12
|
+
*/
|
|
13
|
+
export class PsbtSigner {
|
|
14
|
+
#cache;
|
|
15
|
+
#txFromBuffer;
|
|
16
|
+
constructor(cache, txFromBuffer) {
|
|
17
|
+
this.#cache = cache;
|
|
18
|
+
this.#txFromBuffer = txFromBuffer;
|
|
19
|
+
}
|
|
20
|
+
getHashAndSighashType(inputs, inputIndex, pubkey, sighashTypes) {
|
|
21
|
+
const input = checkForInput(inputs, inputIndex);
|
|
22
|
+
const { hash, sighashType, script } = this.getHashForSig(inputIndex, input, false, sighashTypes);
|
|
23
|
+
checkScriptForPubkey(pubkey, script, 'sign');
|
|
24
|
+
return { hash, sighashType };
|
|
25
|
+
}
|
|
26
|
+
getHashForSig(inputIndex, input, forValidate, sighashTypes) {
|
|
27
|
+
const unsignedTx = this.#cache.tx;
|
|
28
|
+
const sighashType = input.sighashType || Transaction.SIGHASH_ALL;
|
|
29
|
+
checkSighashTypeAllowed(sighashType, sighashTypes);
|
|
30
|
+
let hash;
|
|
31
|
+
let prevout;
|
|
32
|
+
if (input.nonWitnessUtxo) {
|
|
33
|
+
const nonWitnessUtxoTx = this.#cache.getNonWitnessUtxoTx(input, inputIndex, this.#txFromBuffer);
|
|
34
|
+
const prevoutHash = unsignedTx.ins[inputIndex].hash;
|
|
35
|
+
const utxoHash = nonWitnessUtxoTx.getHash();
|
|
36
|
+
if (!equals(prevoutHash, utxoHash)) {
|
|
37
|
+
throw new Error(`Non-witness UTXO hash for input #${inputIndex} doesn't match the hash specified in the prevout`);
|
|
38
|
+
}
|
|
39
|
+
const prevoutIndex = unsignedTx.ins[inputIndex].index;
|
|
40
|
+
prevout = nonWitnessUtxoTx.outs[prevoutIndex];
|
|
41
|
+
}
|
|
42
|
+
else if (input.witnessUtxo) {
|
|
43
|
+
prevout = {
|
|
44
|
+
script: input.witnessUtxo.script,
|
|
45
|
+
value: input.witnessUtxo.value,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw new Error('Need a Utxo input item for signing');
|
|
50
|
+
}
|
|
51
|
+
const { meaningfulScript, type } = getMeaningfulScript(prevout.script, inputIndex, 'input', input.redeemScript, input.witnessScript);
|
|
52
|
+
const script = meaningfulScript;
|
|
53
|
+
if (['p2sh-p2wsh', 'p2wsh'].includes(type)) {
|
|
54
|
+
hash = unsignedTx.hashForWitnessV0(inputIndex, script, prevout.value, sighashType);
|
|
55
|
+
}
|
|
56
|
+
else if (isP2WPKH(meaningfulScript)) {
|
|
57
|
+
const p2pkhPayment = payments.p2pkh({
|
|
58
|
+
hash: meaningfulScript.subarray(2),
|
|
59
|
+
});
|
|
60
|
+
if (!p2pkhPayment.output)
|
|
61
|
+
throw new Error('Unable to create signing script');
|
|
62
|
+
hash = unsignedTx.hashForWitnessV0(inputIndex, p2pkhPayment.output, prevout.value, sighashType);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// non-segwit
|
|
66
|
+
if (input.nonWitnessUtxo === undefined && !this.#cache.unsafeSignNonSegwit)
|
|
67
|
+
throw new Error(`Input #${inputIndex} has witnessUtxo but non-segwit script: ` +
|
|
68
|
+
toHex(meaningfulScript));
|
|
69
|
+
if (!forValidate && this.#cache.unsafeSignNonSegwit)
|
|
70
|
+
console.warn('Warning: Signing non-segwit inputs without the full parent transaction ' +
|
|
71
|
+
'means there is a chance that a miner could feed you incorrect information ' +
|
|
72
|
+
"to trick you into paying large fees. This behavior is the same as Psbt's predecessor " +
|
|
73
|
+
'(TransactionBuilder - now removed) when signing non-segwit scripts. You are not ' +
|
|
74
|
+
'able to export this Psbt with toBuffer|toBase64|toHex since it is not ' +
|
|
75
|
+
'BIP174 compliant.\n*********************\nPROCEED WITH CAUTION!\n' +
|
|
76
|
+
'*********************');
|
|
77
|
+
hash = unsignedTx.hashForSignature(inputIndex, script, sighashType);
|
|
78
|
+
}
|
|
79
|
+
return { script, sighashType, hash };
|
|
80
|
+
}
|
|
81
|
+
getTaprootHashesForSig(inputIndex, input, inputs, pubkey, tapLeafHashToSign, allowedSighashTypes) {
|
|
82
|
+
const unsignedTx = this.#cache.tx;
|
|
83
|
+
const sighashType = input.sighashType || Transaction.SIGHASH_DEFAULT;
|
|
84
|
+
checkSighashTypeAllowed(sighashType, allowedSighashTypes);
|
|
85
|
+
if (!this.#cache.prevOuts) {
|
|
86
|
+
const prevOuts = inputs.map((i, index) => this.#cache.getScriptAndAmountFromUtxo(index, i, this.#txFromBuffer));
|
|
87
|
+
this.#cache.prevOuts = prevOuts;
|
|
88
|
+
this.#cache.signingScripts = prevOuts.map((o) => o.script);
|
|
89
|
+
this.#cache.values = prevOuts.map((o) => o.value);
|
|
90
|
+
}
|
|
91
|
+
const signingScripts = this.#cache.signingScripts;
|
|
92
|
+
const values = this.#cache.values;
|
|
93
|
+
if (!this.#cache.taprootHashCache) {
|
|
94
|
+
this.#cache.taprootHashCache = unsignedTx.getTaprootHashCache(signingScripts, values);
|
|
95
|
+
}
|
|
96
|
+
const taprootCache = this.#cache.taprootHashCache;
|
|
97
|
+
const hashes = [];
|
|
98
|
+
if (input.tapInternalKey && !tapLeafHashToSign) {
|
|
99
|
+
const outputKey = this.#cache.getPrevoutTaprootKey(inputIndex, input, this.#txFromBuffer) ||
|
|
100
|
+
new Uint8Array(0);
|
|
101
|
+
if (equals(toXOnly(pubkey), outputKey)) {
|
|
102
|
+
const tapKeyHash = unsignedTx.hashForWitnessV1(inputIndex, signingScripts, values, sighashType, undefined, undefined, taprootCache);
|
|
103
|
+
hashes.push({ pubkey: pubkey, hash: tapKeyHash });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const tapLeafHashes = (input.tapLeafScript || [])
|
|
107
|
+
.filter((tapLeaf) => pubkeyInScript(pubkey, tapLeaf.script))
|
|
108
|
+
.map((tapLeaf) => {
|
|
109
|
+
const hash = tapleafHash({
|
|
110
|
+
output: tapLeaf.script,
|
|
111
|
+
version: tapLeaf.leafVersion,
|
|
112
|
+
});
|
|
113
|
+
return Object.assign({ hash }, tapLeaf);
|
|
114
|
+
})
|
|
115
|
+
.filter((tapLeaf) => !tapLeafHashToSign || equals(tapLeafHashToSign, tapLeaf.hash))
|
|
116
|
+
.map((tapLeaf) => {
|
|
117
|
+
const tapScriptHash = unsignedTx.hashForWitnessV1(inputIndex, signingScripts, values, sighashType, tapLeaf.hash, undefined, taprootCache);
|
|
118
|
+
return {
|
|
119
|
+
pubkey: pubkey,
|
|
120
|
+
hash: tapScriptHash,
|
|
121
|
+
leafHash: tapLeaf.hash,
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
return hashes.concat(tapLeafHashes);
|
|
125
|
+
}
|
|
126
|
+
getAllTaprootHashesForSig(inputIndex, input, inputs) {
|
|
127
|
+
const allPublicKeys = [];
|
|
128
|
+
if (input.tapInternalKey) {
|
|
129
|
+
const key = this.#cache.getPrevoutTaprootKey(inputIndex, input, this.#txFromBuffer);
|
|
130
|
+
if (key) {
|
|
131
|
+
allPublicKeys.push(key);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (input.tapScriptSig) {
|
|
135
|
+
const tapScriptPubkeys = input.tapScriptSig.map((tss) => tss.pubkey);
|
|
136
|
+
allPublicKeys.push(...tapScriptPubkeys);
|
|
137
|
+
}
|
|
138
|
+
const allHashes = allPublicKeys.map((pubicKey) => this.getTaprootHashesForSig(inputIndex, input, inputs, pubicKey));
|
|
139
|
+
return allHashes.flat();
|
|
140
|
+
}
|
|
141
|
+
trimTaprootSig(signature) {
|
|
142
|
+
return signature.length === 64 ? signature : signature.subarray(0, 64);
|
|
143
|
+
}
|
|
144
|
+
getSignersFromHD(inputIndex, inputs, hdKeyPair) {
|
|
145
|
+
const input = checkForInput(inputs, inputIndex);
|
|
146
|
+
if (!input.bip32Derivation || input.bip32Derivation.length === 0) {
|
|
147
|
+
throw new Error('Need bip32Derivation to sign with HD');
|
|
148
|
+
}
|
|
149
|
+
const myDerivations = input.bip32Derivation
|
|
150
|
+
.map((bipDv) => {
|
|
151
|
+
if (equals(bipDv.masterFingerprint, hdKeyPair.fingerprint)) {
|
|
152
|
+
return bipDv;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
})
|
|
158
|
+
.filter((v) => !!v);
|
|
159
|
+
if (myDerivations.length === 0) {
|
|
160
|
+
throw new Error('Need one bip32Derivation masterFingerprint to match the HDSigner fingerprint');
|
|
161
|
+
}
|
|
162
|
+
return myDerivations.map((bipDv) => {
|
|
163
|
+
const node = hdKeyPair.derivePath(bipDv.path);
|
|
164
|
+
if (!equals(bipDv.pubkey, node.publicKey)) {
|
|
165
|
+
throw new Error('pubkey did not match bip32Derivation');
|
|
166
|
+
}
|
|
167
|
+
return node;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
bip32DerivationIsMine(root) {
|
|
171
|
+
return (d) => {
|
|
172
|
+
const fingerprint = root.fingerprint instanceof Uint8Array
|
|
173
|
+
? root.fingerprint
|
|
174
|
+
: new Uint8Array(root.fingerprint);
|
|
175
|
+
if (!equals(d.masterFingerprint, fingerprint))
|
|
176
|
+
return false;
|
|
177
|
+
const derivedPubkey = root.derivePath(d.path).publicKey;
|
|
178
|
+
const pubkey = derivedPubkey instanceof Uint8Array ? derivedPubkey : new Uint8Array(derivedPubkey);
|
|
179
|
+
if (!equals(pubkey, d.pubkey))
|
|
180
|
+
return false;
|
|
181
|
+
return true;
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function checkSighashTypeAllowed(sighashType, sighashTypes) {
|
|
186
|
+
if (sighashTypes && !sighashTypes.includes(sighashType)) {
|
|
187
|
+
const str = sighashTypeToString(sighashType);
|
|
188
|
+
throw new Error(`Sighash type is not allowed. Retry the sign method passing the ` +
|
|
189
|
+
`sighashTypes array of whitelisted types. Sighash type: ${str}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=PsbtSigner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PsbtSigner.js","sourceRoot":"","sources":["../../src/psbt/PsbtSigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Transaction as ITransaction, TransactionFromBuffer } from 'bip174';
|
|
2
|
+
import { Transaction } from '../transaction.js';
|
|
3
|
+
import type { TransactionInput, TransactionOutput } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* This class implements the Transaction interface from bip174 library.
|
|
6
|
+
* It contains a bitcoinjs-lib Transaction object.
|
|
7
|
+
*/
|
|
8
|
+
export declare class PsbtTransaction implements ITransaction {
|
|
9
|
+
tx: Transaction;
|
|
10
|
+
constructor(buffer?: Uint8Array);
|
|
11
|
+
getInputOutputCounts(): {
|
|
12
|
+
inputCount: number;
|
|
13
|
+
outputCount: number;
|
|
14
|
+
};
|
|
15
|
+
addInput(input: TransactionInput): void;
|
|
16
|
+
addOutput(output: TransactionOutput): void;
|
|
17
|
+
toBuffer(): Uint8Array;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* This function is needed to pass to the bip174 base class's fromBuffer.
|
|
21
|
+
* It takes the "transaction buffer" portion of the psbt buffer and returns a
|
|
22
|
+
* Transaction (From the bip174 library) interface.
|
|
23
|
+
*/
|
|
24
|
+
export declare const transactionFromBuffer: TransactionFromBuffer;
|
|
25
|
+
//# sourceMappingURL=PsbtTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PsbtTransaction.d.ts","sourceRoot":"","sources":["../../src/psbt/PsbtTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,YAAY,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAEjF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAWtE;;;GAGG;AACH,qBAAa,eAAgB,YAAW,YAAY;IACzC,EAAE,EAAE,WAAW,CAAC;gBAEJ,MAAM,GAAE,UAAwB;IAS5C,oBAAoB,IAAI;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACvB;IAOM,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAgBvC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAY1C,QAAQ,IAAI,UAAU;CAGhC;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,qBACL,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { fromHex, reverse } from '../io/index.js';
|
|
2
|
+
import { Transaction } from '../transaction.js';
|
|
3
|
+
import { checkTxEmpty } from './validation.js';
|
|
4
|
+
/**
|
|
5
|
+
* Empty version-2 transaction with zero inputs and zero outputs.
|
|
6
|
+
* Used as the default buffer when constructing a new PsbtTransaction.
|
|
7
|
+
*
|
|
8
|
+
* Layout: [version(4LE)] [inputCount(varint)] [outputCount(varint)] [locktime(4LE)]
|
|
9
|
+
* [02 00 00 00] [00] [00] [00 00 00 00]
|
|
10
|
+
*/
|
|
11
|
+
const EMPTY_TX_V2 = new Uint8Array([2, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
|
|
12
|
+
/**
|
|
13
|
+
* This class implements the Transaction interface from bip174 library.
|
|
14
|
+
* It contains a bitcoinjs-lib Transaction object.
|
|
15
|
+
*/
|
|
16
|
+
export class PsbtTransaction {
|
|
17
|
+
tx;
|
|
18
|
+
constructor(buffer = EMPTY_TX_V2) {
|
|
19
|
+
this.tx = Transaction.fromBuffer(buffer);
|
|
20
|
+
checkTxEmpty(this.tx);
|
|
21
|
+
Object.defineProperty(this, 'tx', {
|
|
22
|
+
enumerable: false,
|
|
23
|
+
writable: true,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
getInputOutputCounts() {
|
|
27
|
+
return {
|
|
28
|
+
inputCount: this.tx.ins.length,
|
|
29
|
+
outputCount: this.tx.outs.length,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
addInput(input) {
|
|
33
|
+
if (input.hash === undefined ||
|
|
34
|
+
input.index === undefined ||
|
|
35
|
+
(!(input.hash instanceof Uint8Array) && typeof input.hash !== 'string') ||
|
|
36
|
+
typeof input.index !== 'number') {
|
|
37
|
+
throw new Error('Error adding input.');
|
|
38
|
+
}
|
|
39
|
+
const hash = (typeof input.hash === 'string' ? reverse(fromHex(input.hash)) : input.hash);
|
|
40
|
+
this.tx.addInput(hash, input.index, input.sequence);
|
|
41
|
+
}
|
|
42
|
+
addOutput(output) {
|
|
43
|
+
if (output.script === undefined ||
|
|
44
|
+
output.value === undefined ||
|
|
45
|
+
!(output.script instanceof Uint8Array) ||
|
|
46
|
+
typeof output.value !== 'bigint') {
|
|
47
|
+
throw new Error('Error adding output.');
|
|
48
|
+
}
|
|
49
|
+
this.tx.addOutput(output.script, output.value);
|
|
50
|
+
}
|
|
51
|
+
toBuffer() {
|
|
52
|
+
return this.tx.toBuffer();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* This function is needed to pass to the bip174 base class's fromBuffer.
|
|
57
|
+
* It takes the "transaction buffer" portion of the psbt buffer and returns a
|
|
58
|
+
* Transaction (From the bip174 library) interface.
|
|
59
|
+
*/
|
|
60
|
+
export const transactionFromBuffer = (buffer) => new PsbtTransaction(buffer);
|
|
61
|
+
//# sourceMappingURL=PsbtTransaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PsbtTransaction.js","sourceRoot":"","sources":["../../src/psbt/PsbtTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEnE;;;GAGG;AACH,MAAM,OAAO,eAAe;IACjB,EAAE,CAAc;IAEvB,YAAmB,SAAqB,WAAW;QAC/C,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAC9B,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;IACP,CAAC;IAEM,oBAAoB;QAIvB,OAAO;YACH,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM;YAC9B,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;SACnC,CAAC;IACN,CAAC;IAEM,QAAQ,CAAC,KAAuB;QACnC,IACI,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,KAAK,CAAC,KAAK,KAAK,SAAS;YACzB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,UAAU,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;YACvE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EACjC,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,IAAI,GAAG,CACT,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAClE,CAAC;QAEb,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEM,SAAS,CAAC,MAAyB;QACtC,IACI,MAAM,CAAC,MAAM,KAAK,SAAS;YAC3B,MAAM,CAAC,KAAK,KAAK,SAAS;YAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,YAAY,UAAU,CAAC;YACtC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAClC,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA0B,CAAC,MAAkB,EAAgB,EAAE,CAC7F,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC"}
|
package/build/psbt/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { Psbt as PsbtBase, PsbtGlobal, PsbtInput, PsbtOutput } from 'bip174';
|
|
6
6
|
import type { Network } from '../networks.js';
|
|
7
7
|
import type { TaprootHashCache, Transaction } from '../transaction.js';
|
|
8
|
-
import type { Bytes32, PublicKey, Satoshi, SchnorrSignature, Script, Signature } from '../types.js';
|
|
8
|
+
import type { Bytes32, MessageHash, PublicKey, Satoshi, SchnorrSignature, Script, Signature } from '../types.js';
|
|
9
9
|
/**
|
|
10
10
|
* Transaction input interface for PSBT.
|
|
11
11
|
*/
|
|
@@ -37,7 +37,7 @@ export interface PsbtTxOutput extends TransactionOutput {
|
|
|
37
37
|
* Signature validation function type.
|
|
38
38
|
* msghash is 32 byte hash of preimage, signature is 64 byte compact signature (r,s 32 bytes each)
|
|
39
39
|
*/
|
|
40
|
-
export type ValidateSigFunction = (pubkey: PublicKey, msghash:
|
|
40
|
+
export type ValidateSigFunction = (pubkey: PublicKey, msghash: MessageHash, signature: Uint8Array) => boolean;
|
|
41
41
|
/**
|
|
42
42
|
* Extended PsbtBase interface with typed inputs and globalMap.
|
|
43
43
|
*/
|
|
@@ -110,14 +110,14 @@ export interface HDSigner extends HDSignerBase {
|
|
|
110
110
|
* Input hash (the "message digest") for the signature algorithm
|
|
111
111
|
* Return a 64 byte signature (32 byte r and 32 byte s in that order)
|
|
112
112
|
*/
|
|
113
|
-
sign(hash:
|
|
113
|
+
sign(hash: MessageHash): Uint8Array;
|
|
114
114
|
}
|
|
115
115
|
/**
|
|
116
116
|
* HD signer interface for asynchronous signing.
|
|
117
117
|
*/
|
|
118
118
|
export interface HDSignerAsync extends HDSignerBase {
|
|
119
119
|
derivePath(path: string): HDSignerAsync;
|
|
120
|
-
sign(hash:
|
|
120
|
+
sign(hash: MessageHash): Promise<Uint8Array>;
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
123
123
|
* Alternative signer interface with lowR support.
|
|
@@ -125,10 +125,10 @@ export interface HDSignerAsync extends HDSignerBase {
|
|
|
125
125
|
export interface SignerAlternative {
|
|
126
126
|
readonly publicKey: PublicKey;
|
|
127
127
|
readonly lowR: boolean;
|
|
128
|
-
sign(hash:
|
|
129
|
-
verify(hash:
|
|
130
|
-
signSchnorr(hash:
|
|
131
|
-
verifySchnorr(hash:
|
|
128
|
+
sign(hash: MessageHash, lowR?: boolean): Signature;
|
|
129
|
+
verify(hash: MessageHash, signature: Signature): boolean;
|
|
130
|
+
signSchnorr(hash: MessageHash): SchnorrSignature;
|
|
131
|
+
verifySchnorr(hash: MessageHash, signature: SchnorrSignature): boolean;
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
134
|
* Basic signer interface for synchronous signing.
|
|
@@ -136,8 +136,8 @@ export interface SignerAlternative {
|
|
|
136
136
|
export interface Signer {
|
|
137
137
|
readonly publicKey: PublicKey;
|
|
138
138
|
readonly network?: Network | undefined;
|
|
139
|
-
sign(hash:
|
|
140
|
-
signSchnorr?(hash:
|
|
139
|
+
sign(hash: MessageHash, lowR?: boolean): Signature;
|
|
140
|
+
signSchnorr?(hash: MessageHash): SchnorrSignature;
|
|
141
141
|
getPublicKey?(): PublicKey;
|
|
142
142
|
}
|
|
143
143
|
/**
|
|
@@ -146,8 +146,8 @@ export interface Signer {
|
|
|
146
146
|
export interface SignerAsync {
|
|
147
147
|
readonly publicKey: PublicKey;
|
|
148
148
|
readonly network?: Network | undefined;
|
|
149
|
-
sign(hash:
|
|
150
|
-
signSchnorr?(hash:
|
|
149
|
+
sign(hash: MessageHash, lowR?: boolean): Promise<Signature>;
|
|
150
|
+
signSchnorr?(hash: MessageHash): Promise<SchnorrSignature>;
|
|
151
151
|
getPublicKey?(): PublicKey;
|
|
152
152
|
}
|
|
153
153
|
/**
|
|
@@ -162,7 +162,7 @@ export interface TaprootHashCheckSigner {
|
|
|
162
162
|
/**
|
|
163
163
|
* Internal PSBT cache for computed values.
|
|
164
164
|
*/
|
|
165
|
-
export interface
|
|
165
|
+
export interface PsbtCacheInterface {
|
|
166
166
|
nonWitnessUtxoTxCache: Transaction[];
|
|
167
167
|
nonWitnessUtxoBufCache: Uint8Array[];
|
|
168
168
|
txInCache: TxInCacheMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/psbt/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/psbt/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { PsbtInput } from 'bip174';
|
|
6
6
|
import type { Payment, PaymentOpts } from '../payments/index.js';
|
|
7
7
|
import type { Transaction } from '../transaction.js';
|
|
8
|
-
import type { PsbtCache } from './types.js';
|
|
8
|
+
import type { PsbtCacheInterface as PsbtCache } from './types.js';
|
|
9
9
|
import type { PublicKey, Script } from '../types.js';
|
|
10
10
|
/**
|
|
11
11
|
* Validates that a number is a valid 32-bit unsigned integer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/psbt/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAe,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/psbt/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAe,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,IAAI,SAAS,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI5C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAIjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAWlD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3C,IAAI,CAKN;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAIzE;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,OAAO,GAC7B,IAAI,CAaN;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAS/D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI5F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,EAClE,iBAAiB,EAAE,MAAM,GAC1B,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,KAAK,IAAI,CAiB/F;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAtBrB,MAAM,gBAAgB,MAAM,gBAAgB,MAAM,UAAU,OAAO,GAAG,QAAQ,KAAK,IAsBP,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QA3BtB,MAAM,gBAAgB,MAAM,gBAAgB,MAAM,UAAU,OAAO,GAAG,QAAQ,KAAK,IA2BJ,CAAC"}
|
package/build/psbt.d.ts
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
|
-
import type { KeyValue,
|
|
1
|
+
import type { KeyValue, PsbtGlobalUpdate, PsbtInput, PsbtInputUpdate, PsbtOutputUpdate } from 'bip174';
|
|
2
2
|
import type { BIP32Interface } from '@btc-vision/bip32';
|
|
3
|
-
import type { ECPairInterface } from 'ecpair';
|
|
4
3
|
import { Transaction } from './transaction.js';
|
|
5
|
-
import type { Bytes32, PublicKey, Script } from './types.js';
|
|
6
|
-
import type { AllScriptType, FinalScriptsFunc, FinalTaprootScriptsFunc, HDSigner, HDSignerAsync, PsbtBaseExtended,
|
|
7
|
-
|
|
4
|
+
import type { Bytes32, MessageHash, PublicKey, Script } from './types.js';
|
|
5
|
+
import type { AllScriptType, FinalScriptsFunc, FinalTaprootScriptsFunc, HDSigner, HDSignerAsync, PsbtBaseExtended, PsbtInputExtended, PsbtOptsOptional, PsbtOutputExtended, PsbtTxInput, PsbtTxOutput, Signer, SignerAlternative, SignerAsync, TaprootHashCheckSigner, ValidateSigFunction } from './psbt/types.js';
|
|
6
|
+
import type { UniversalSigner } from '@btc-vision/ecpair';
|
|
7
|
+
export type { TransactionInput, PsbtTxInput, TransactionOutput, PsbtTxOutput, ValidateSigFunction, PsbtBaseExtended, PsbtOptsOptional, PsbtOpts, PsbtInputExtended, PsbtOutputExtended, PsbtOutputExtendedScript, HDSigner, HDSignerAsync, SignerAlternative, Signer, SignerAsync, TaprootHashCheckSigner, PsbtCacheInterface, TxCacheNumberKey, ScriptType, AllScriptType, GetScriptReturn, FinalScriptsFunc, FinalTaprootScriptsFunc, } from './psbt/types.js';
|
|
8
|
+
export { getFinalScripts, prepareFinalScripts };
|
|
9
|
+
export { PsbtCache } from './psbt/PsbtCache.js';
|
|
10
|
+
export { PsbtSigner } from './psbt/PsbtSigner.js';
|
|
11
|
+
export { PsbtFinalizer } from './psbt/PsbtFinalizer.js';
|
|
12
|
+
export { PsbtTransaction, transactionFromBuffer } from './psbt/PsbtTransaction.js';
|
|
13
|
+
declare function getFinalScripts(inputIndex: number, input: PsbtInput, script: Script, isSegwit: boolean, isP2SH: boolean, isP2WSH: boolean, canRunChecks?: boolean, solution?: Uint8Array[]): {
|
|
14
|
+
finalScriptSig: Script | undefined;
|
|
15
|
+
finalScriptWitness: Uint8Array | undefined;
|
|
16
|
+
};
|
|
17
|
+
declare function prepareFinalScripts(script: Uint8Array, scriptType: string, partialSig: import('bip174').PartialSig[], isSegwit: boolean, isP2SH: boolean, isP2WSH: boolean, solution?: Uint8Array[]): {
|
|
18
|
+
finalScriptSig: Script | undefined;
|
|
19
|
+
finalScriptWitness: Uint8Array | undefined;
|
|
20
|
+
};
|
|
8
21
|
/**
|
|
9
22
|
* Psbt class can parse and generate a PSBT binary based off of the BIP174.
|
|
10
23
|
* There are 6 roles that this class fulfills. (Explained in BIP174)
|
|
@@ -42,17 +55,10 @@ export type { TransactionInput, PsbtTxInput, TransactionOutput, PsbtTxOutput, Va
|
|
|
42
55
|
* Transaction Extractor: This role will perform some checks before returning a
|
|
43
56
|
* Transaction object. Such as fee rate not being larger than maximumFeeRate etc.
|
|
44
57
|
*/
|
|
45
|
-
/**
|
|
46
|
-
* Psbt class can parse and generate a PSBT binary based off of the BIP174.
|
|
47
|
-
*/
|
|
48
58
|
export declare class Psbt {
|
|
49
59
|
#private;
|
|
50
60
|
data: PsbtBaseExtended;
|
|
51
61
|
constructor(opts?: PsbtOptsOptional, data?: PsbtBaseExtended);
|
|
52
|
-
/** @internal - Exposed for testing. Do not use in production code. */
|
|
53
|
-
get __CACHE(): PsbtCache;
|
|
54
|
-
/** @internal - Exposed for testing. Do not use in production code. */
|
|
55
|
-
get opts(): PsbtOpts;
|
|
56
62
|
get inputCount(): number;
|
|
57
63
|
get version(): number;
|
|
58
64
|
set version(version: number);
|
|
@@ -65,6 +71,7 @@ export declare class Psbt {
|
|
|
65
71
|
static fromBuffer(buffer: Uint8Array, opts?: PsbtOptsOptional): Psbt;
|
|
66
72
|
combine(...those: Psbt[]): this;
|
|
67
73
|
clone(): Psbt;
|
|
74
|
+
get maximumFeeRate(): number;
|
|
68
75
|
setMaximumFeeRate(satoshiPerByte: number): void;
|
|
69
76
|
setVersion(version: number): this;
|
|
70
77
|
setVersionTRUC(): this;
|
|
@@ -73,17 +80,6 @@ export declare class Psbt {
|
|
|
73
80
|
addInputs(inputDatas: PsbtInputExtended[], checkPartialSigs?: boolean): this;
|
|
74
81
|
addInput(inputData: PsbtInputExtended, checkPartialSigs?: boolean): this;
|
|
75
82
|
addOutputs(outputDatas: PsbtOutputExtended[], checkPartialSigs?: boolean): this;
|
|
76
|
-
/**
|
|
77
|
-
* Add an output to the PSBT.
|
|
78
|
-
*
|
|
79
|
-
* **PERFORMANCE WARNING:** Passing an `address` string is ~10x slower than passing
|
|
80
|
-
* a `script` directly due to address parsing overhead (bech32 decode, etc.).
|
|
81
|
-
* For high-performance use cases with many outputs, pre-compute the script using
|
|
82
|
-
* `toOutputScript(address, network)` and pass `{ script, value }` instead.
|
|
83
|
-
*
|
|
84
|
-
* @param outputData - Output data with either `address` or `script`, and `value`
|
|
85
|
-
* @param checkPartialSigs - Whether to check for existing signatures (default: true)
|
|
86
|
-
*/
|
|
87
83
|
addOutput(outputData: PsbtOutputExtended, checkPartialSigs?: boolean): this;
|
|
88
84
|
extractTransaction(disableFeeCheck?: boolean, disableOutputChecks?: boolean): Transaction;
|
|
89
85
|
getFeeRate(disableOutputChecks?: boolean): number;
|
|
@@ -102,12 +98,12 @@ export declare class Psbt {
|
|
|
102
98
|
signAllInputsHDAsync(hdKeyPair: HDSigner | HDSignerAsync, sighashTypes?: number[]): Promise<void>;
|
|
103
99
|
signInputHD(inputIndex: number, hdKeyPair: HDSigner, sighashTypes?: number[]): this;
|
|
104
100
|
signInputHDAsync(inputIndex: number, hdKeyPair: HDSigner | HDSignerAsync, sighashTypes?: number[]): Promise<void>;
|
|
105
|
-
signAllInputs(keyPair: Signer | SignerAlternative | BIP32Interface |
|
|
106
|
-
signAllInputsAsync(keyPair: Signer | SignerAlternative | SignerAsync | BIP32Interface |
|
|
107
|
-
signInput(inputIndex: number, keyPair: Signer | SignerAlternative | HDSigner | BIP32Interface |
|
|
108
|
-
signTaprootInput(inputIndex: number, keyPair: Signer | SignerAlternative | HDSigner | BIP32Interface |
|
|
109
|
-
signInputAsync(inputIndex: number, keyPair: Signer | SignerAlternative | SignerAsync | HDSigner | HDSignerAsync | BIP32Interface |
|
|
110
|
-
signTaprootInputAsync(inputIndex: number, keyPair: Signer | SignerAlternative | SignerAsync | HDSigner | HDSignerAsync | BIP32Interface |
|
|
101
|
+
signAllInputs(keyPair: Signer | SignerAlternative | BIP32Interface | UniversalSigner, sighashTypes?: number[]): this;
|
|
102
|
+
signAllInputsAsync(keyPair: Signer | SignerAlternative | SignerAsync | BIP32Interface | UniversalSigner, sighashTypes?: number[]): Promise<void>;
|
|
103
|
+
signInput(inputIndex: number, keyPair: Signer | SignerAlternative | HDSigner | BIP32Interface | UniversalSigner, sighashTypes?: number[]): this;
|
|
104
|
+
signTaprootInput(inputIndex: number, keyPair: Signer | SignerAlternative | HDSigner | BIP32Interface | UniversalSigner, tapLeafHashToSign?: Uint8Array, sighashTypes?: number[]): this;
|
|
105
|
+
signInputAsync(inputIndex: number, keyPair: Signer | SignerAlternative | SignerAsync | HDSigner | HDSignerAsync | BIP32Interface | UniversalSigner, sighashTypes?: number[]): Promise<void>;
|
|
106
|
+
signTaprootInputAsync(inputIndex: number, keyPair: Signer | SignerAlternative | SignerAsync | HDSigner | HDSignerAsync | BIP32Interface | UniversalSigner, tapLeafHash?: Uint8Array, sighashTypes?: number[]): Promise<void>;
|
|
111
107
|
toBuffer(): Uint8Array;
|
|
112
108
|
toHex(): string;
|
|
113
109
|
toBase64(): string;
|
|
@@ -118,17 +114,9 @@ export declare class Psbt {
|
|
|
118
114
|
addUnknownKeyValToInput(inputIndex: number, keyVal: KeyValue): this;
|
|
119
115
|
addUnknownKeyValToOutput(outputIndex: number, keyVal: KeyValue): this;
|
|
120
116
|
clearFinalizedInput(inputIndex: number): this;
|
|
121
|
-
checkTaprootHashesForSig(inputIndex: number, input: PsbtInput, keyPair: Signer | SignerAlternative | SignerAsync | HDSigner | HDSignerAsync | TaprootHashCheckSigner | BIP32Interface |
|
|
122
|
-
hash:
|
|
117
|
+
checkTaprootHashesForSig(inputIndex: number, input: PsbtInput, keyPair: Signer | SignerAlternative | SignerAsync | HDSigner | HDSignerAsync | TaprootHashCheckSigner | BIP32Interface | UniversalSigner, tapLeafHashToSign?: Uint8Array, allowedSighashTypes?: number[]): {
|
|
118
|
+
hash: MessageHash;
|
|
123
119
|
leafHash?: Bytes32;
|
|
124
120
|
}[];
|
|
125
121
|
}
|
|
126
|
-
export declare function getFinalScripts(inputIndex: number, input: PsbtInput, script: Script, isSegwit: boolean, isP2SH: boolean, isP2WSH: boolean, canRunChecks?: boolean, solution?: Uint8Array[]): {
|
|
127
|
-
finalScriptSig: Script | undefined;
|
|
128
|
-
finalScriptWitness: Uint8Array | undefined;
|
|
129
|
-
};
|
|
130
|
-
export declare function prepareFinalScripts(script: Uint8Array, scriptType: string, partialSig: PartialSig[], isSegwit: boolean, isP2SH: boolean, isP2WSH: boolean, solution?: Uint8Array[]): {
|
|
131
|
-
finalScriptSig: Script | undefined;
|
|
132
|
-
finalScriptWitness: Uint8Array | undefined;
|
|
133
|
-
};
|
|
134
122
|
//# sourceMappingURL=psbt.d.ts.map
|
package/build/psbt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../src/psbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../src/psbt.ts"],"names":[],"mappings":"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"}
|