ecash-lib 4.11.0 → 4.12.0
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/README.md +1 -0
- package/dist/consts.d.ts +11 -0
- package/dist/consts.d.ts.map +1 -1
- package/dist/consts.js +12 -1
- package/dist/consts.js.map +1 -1
- package/dist/ffi/ecash_lib_wasm_bg_browser.js +20489 -20489
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/dist/psbt.d.ts +54 -4
- package/dist/psbt.d.ts.map +1 -1
- package/dist/psbt.js +256 -7
- package/dist/psbt.js.map +1 -1
- package/dist/script.d.ts +11 -1
- package/dist/script.d.ts.map +1 -1
- package/dist/script.js +24 -0
- package/dist/script.js.map +1 -1
- package/dist/signatories.d.ts +10 -2
- package/dist/signatories.d.ts.map +1 -1
- package/dist/signatories.js +156 -1
- package/dist/signatories.js.map +1 -1
- package/dist/tx.d.ts +40 -0
- package/dist/tx.d.ts.map +1 -1
- package/dist/tx.js +223 -0
- package/dist/tx.js.map +1 -1
- package/package.json +1 -1
- package/src/consts.ts +13 -0
- package/src/ffi/ecash_lib_wasm_bg_browser.js +20489 -20489
- package/src/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/src/psbt.ts +328 -10
- package/src/script.ts +25 -1
- package/src/signatories.ts +214 -3
- package/src/tx.ts +279 -0
package/dist/signatories.d.ts
CHANGED
|
@@ -30,7 +30,15 @@ export declare function flagSignature(sig: Uint8Array, sigHashFlags: SigHashType
|
|
|
30
30
|
**/
|
|
31
31
|
export declare function signWithSigHash(ecc: Ecc, sk: Uint8Array, sigHash: Uint8Array, sigHashType: SigHashType): Uint8Array;
|
|
32
32
|
/** Signatory for a P2PKH input. Always uses Schnorr signatures */
|
|
33
|
-
export declare const P2PKHSignatory: (sk: Uint8Array, pk: Uint8Array, sigHashType: SigHashType) =>
|
|
33
|
+
export declare const P2PKHSignatory: (sk: Uint8Array, pk: Uint8Array, sigHashType: SigHashType) => Signatory;
|
|
34
|
+
/** Signatory for bare m-of-n multisig (output script is the multisig script itself). */
|
|
35
|
+
export declare const BareMultisigSignatory: (m: number, pubkeys: Uint8Array[], sk: Uint8Array, myPk: Uint8Array, sigHashType: SigHashType) => Signatory;
|
|
36
|
+
/** Signatory for bare m-of-n multisig using Schnorr signatures (BIP143 Schnorr multisig). */
|
|
37
|
+
export declare const BareMultisigSignatorySchnorr: (m: number, pubkeys: Uint8Array[], sk: Uint8Array, myPk: Uint8Array, signerIndices: Set<number>, sigHashType: SigHashType) => Signatory;
|
|
38
|
+
/** Signatory for P2SH m-of-n multisig. */
|
|
39
|
+
export declare const P2SHMultisigSignatory: (m: number, pubkeys: Uint8Array[], sk: Uint8Array, myPk: Uint8Array, sigHashType: SigHashType) => Signatory;
|
|
40
|
+
/** Signatory for P2SH m-of-n multisig using Schnorr signatures. */
|
|
41
|
+
export declare const P2SHMultisigSignatorySchnorr: (m: number, pubkeys: Uint8Array[], sk: Uint8Array, myPk: Uint8Array, signerIndices: Set<number>, sigHashType: SigHashType) => Signatory;
|
|
34
42
|
/** Signatory for a P2PK input. Always uses Schnorr signatures */
|
|
35
|
-
export declare const P2PKSignatory: (sk: Uint8Array, sigHashType: SigHashType) =>
|
|
43
|
+
export declare const P2PKSignatory: (sk: Uint8Array, sigHashType: SigHashType) => Signatory;
|
|
36
44
|
//# sourceMappingURL=signatories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signatories.d.ts","sourceRoot":"","sources":["../src/signatories.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"signatories.d.ts","sourceRoot":"","sources":["../src/signatories.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AAQzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;;;;;;;IAeI;AACJ,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;AAErE,gDAAgD;AAChD,wBAAgB,aAAa,CACzB,GAAG,EAAE,UAAU,EACf,YAAY,EAAE,WAAW,GAC1B,UAAU,CAKZ;AAED;;;IAGI;AACJ,wBAAgB,eAAe,CAC3B,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,WAAW,GACzB,UAAU,CAMZ;AAED,kEAAkE;AAClE,eAAO,MAAM,cAAc,GACvB,IAAI,UAAU,EACd,IAAI,UAAU,EACd,aAAa,WAAW,KACzB,SAOF,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,GAC9B,GAAG,MAAM,EACT,SAAS,UAAU,EAAE,EACrB,IAAI,UAAU,EACd,MAAM,UAAU,EAChB,aAAa,WAAW,KACzB,SAgCF,CAAC;AAEF,6FAA6F;AAC7F,eAAO,MAAM,4BAA4B,GACrC,GAAG,MAAM,EACT,SAAS,UAAU,EAAE,EACrB,IAAI,UAAU,EACd,MAAM,UAAU,EAChB,eAAe,GAAG,CAAC,MAAM,CAAC,EAC1B,aAAa,WAAW,KACzB,SA+CF,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,qBAAqB,GAC9B,GAAG,MAAM,EACT,SAAS,UAAU,EAAE,EACrB,IAAI,UAAU,EACd,MAAM,UAAU,EAChB,aAAa,WAAW,KACzB,SAuCF,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,4BAA4B,GACrC,GAAG,MAAM,EACT,SAAS,UAAU,EAAE,EACrB,IAAI,UAAU,EACd,MAAM,UAAU,EAChB,eAAe,GAAG,CAAC,MAAM,CAAC,EAC1B,aAAa,WAAW,KACzB,SAgDF,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,aAAa,GACtB,IAAI,UAAU,EACd,aAAa,WAAW,KACzB,SAOF,CAAC"}
|
package/dist/signatories.js
CHANGED
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
// Distributed under the MIT software license, see the accompanying
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.P2PKSignatory = exports.P2PKHSignatory = void 0;
|
|
6
|
+
exports.P2PKSignatory = exports.P2SHMultisigSignatorySchnorr = exports.P2SHMultisigSignatory = exports.BareMultisigSignatorySchnorr = exports.BareMultisigSignatory = exports.P2PKHSignatory = void 0;
|
|
7
7
|
exports.flagSignature = flagSignature;
|
|
8
8
|
exports.signWithSigHash = signWithSigHash;
|
|
9
|
+
/**
|
|
10
|
+
* Signatories and signing helpers used with `TxBuilder` (`TxBuilderInput.signatory`).
|
|
11
|
+
*/
|
|
12
|
+
const ecc_js_1 = require("./ecc.js");
|
|
13
|
+
const consts_js_1 = require("./consts.js");
|
|
9
14
|
const hash_js_1 = require("./hash.js");
|
|
10
15
|
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
11
16
|
const op_js_1 = require("./op.js");
|
|
@@ -38,6 +43,156 @@ const P2PKHSignatory = (sk, pk, sigHashType) => {
|
|
|
38
43
|
};
|
|
39
44
|
};
|
|
40
45
|
exports.P2PKHSignatory = P2PKHSignatory;
|
|
46
|
+
/** Signatory for bare m-of-n multisig (output script is the multisig script itself). */
|
|
47
|
+
const BareMultisigSignatory = (m, pubkeys, sk, myPk, sigHashType) => {
|
|
48
|
+
return (ecc, input) => {
|
|
49
|
+
if (ecc instanceof ecc_js_1.EccDummy) {
|
|
50
|
+
const dummySig = new Uint8Array(consts_js_1.ECDSA_SIG_ESTIMATE_BYTES);
|
|
51
|
+
const signatures = Array(m)
|
|
52
|
+
.fill(undefined)
|
|
53
|
+
.map(() => dummySig);
|
|
54
|
+
return script_js_1.Script.multisigSpend({ signatures });
|
|
55
|
+
}
|
|
56
|
+
const preimage = input.sigHashPreimage(sigHashType);
|
|
57
|
+
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
58
|
+
const sig = ecc.ecdsaSign(sk, sighash);
|
|
59
|
+
const sigFlagged = flagSignature(sig, sigHashType);
|
|
60
|
+
const myIndex = pubkeys.findIndex(pk => pk.length === myPk.length && pk.every((b, i) => b === myPk[i]));
|
|
61
|
+
if (myIndex < 0) {
|
|
62
|
+
throw new Error('Signer pubkey not found in multisig pubkeys');
|
|
63
|
+
}
|
|
64
|
+
const n = pubkeys.length;
|
|
65
|
+
const signatures = Array(n).fill(undefined);
|
|
66
|
+
signatures[myIndex] = sigFlagged;
|
|
67
|
+
const nonNull = signatures.filter((s) => s !== undefined);
|
|
68
|
+
const sigsForScript = [
|
|
69
|
+
...nonNull,
|
|
70
|
+
...Array(m - nonNull.length).fill(undefined),
|
|
71
|
+
];
|
|
72
|
+
return script_js_1.Script.multisigSpend({ signatures: sigsForScript });
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
exports.BareMultisigSignatory = BareMultisigSignatory;
|
|
76
|
+
/** Signatory for bare m-of-n multisig using Schnorr signatures (BIP143 Schnorr multisig). */
|
|
77
|
+
const BareMultisigSignatorySchnorr = (m, pubkeys, sk, myPk, signerIndices, sigHashType) => {
|
|
78
|
+
return (ecc, input) => {
|
|
79
|
+
const n = pubkeys.length;
|
|
80
|
+
if (signerIndices.size !== m) {
|
|
81
|
+
throw new Error(`signerIndices must have ${m} elements for ${m}-of-${n} multisig`);
|
|
82
|
+
}
|
|
83
|
+
if (ecc instanceof ecc_js_1.EccDummy) {
|
|
84
|
+
const dummySig = new Uint8Array(consts_js_1.SCHNORR_SIG_ESTIMATE_BYTES);
|
|
85
|
+
const signatures = Array(m)
|
|
86
|
+
.fill(undefined)
|
|
87
|
+
.map(() => dummySig);
|
|
88
|
+
return script_js_1.Script.multisigSpend({
|
|
89
|
+
signatures,
|
|
90
|
+
pubkeyIndices: signerIndices,
|
|
91
|
+
numPubkeys: n,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
const preimage = input.sigHashPreimage(sigHashType);
|
|
95
|
+
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
96
|
+
const sig = ecc.schnorrSign(sk, sighash);
|
|
97
|
+
const sigFlagged = flagSignature(sig, sigHashType);
|
|
98
|
+
const myIndex = pubkeys.findIndex(pk => pk.length === myPk.length && pk.every((b, i) => b === myPk[i]));
|
|
99
|
+
if (myIndex < 0) {
|
|
100
|
+
throw new Error('Signer pubkey not found in multisig pubkeys');
|
|
101
|
+
}
|
|
102
|
+
if (!signerIndices.has(myIndex)) {
|
|
103
|
+
throw new Error(`Signer index ${myIndex} not in signerIndices ${[
|
|
104
|
+
...signerIndices,
|
|
105
|
+
].join(',')}`);
|
|
106
|
+
}
|
|
107
|
+
const sortedIndices = [...signerIndices].sort((a, b) => a - b);
|
|
108
|
+
const signatures = sortedIndices.map(idx => idx === myIndex ? sigFlagged : undefined);
|
|
109
|
+
return script_js_1.Script.multisigSpend({
|
|
110
|
+
signatures,
|
|
111
|
+
pubkeyIndices: signerIndices,
|
|
112
|
+
numPubkeys: n,
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
exports.BareMultisigSignatorySchnorr = BareMultisigSignatorySchnorr;
|
|
117
|
+
/** Signatory for P2SH m-of-n multisig. */
|
|
118
|
+
const P2SHMultisigSignatory = (m, pubkeys, sk, myPk, sigHashType) => {
|
|
119
|
+
return (ecc, input) => {
|
|
120
|
+
const redeemScript = script_js_1.Script.multisig(m, pubkeys);
|
|
121
|
+
if (ecc instanceof ecc_js_1.EccDummy) {
|
|
122
|
+
const dummySig = new Uint8Array(consts_js_1.ECDSA_SIG_ESTIMATE_BYTES);
|
|
123
|
+
const signatures = Array(m)
|
|
124
|
+
.fill(undefined)
|
|
125
|
+
.map(() => dummySig);
|
|
126
|
+
return script_js_1.Script.multisigSpend({
|
|
127
|
+
signatures,
|
|
128
|
+
redeemScript,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
const preimage = input.sigHashPreimage(sigHashType);
|
|
132
|
+
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
133
|
+
const sig = ecc.ecdsaSign(sk, sighash);
|
|
134
|
+
const sigFlagged = flagSignature(sig, sigHashType);
|
|
135
|
+
const myIndex = pubkeys.findIndex(pk => pk.length === myPk.length && pk.every((b, i) => b === myPk[i]));
|
|
136
|
+
if (myIndex < 0) {
|
|
137
|
+
throw new Error('Signer pubkey not found in multisig pubkeys');
|
|
138
|
+
}
|
|
139
|
+
const n = pubkeys.length;
|
|
140
|
+
const signatures = Array(n).fill(undefined);
|
|
141
|
+
signatures[myIndex] = sigFlagged;
|
|
142
|
+
const nonNull = signatures.filter((s) => s !== undefined);
|
|
143
|
+
const sigsForScript = [
|
|
144
|
+
...nonNull,
|
|
145
|
+
...Array(m - nonNull.length).fill(undefined),
|
|
146
|
+
];
|
|
147
|
+
return script_js_1.Script.multisigSpend({
|
|
148
|
+
signatures: sigsForScript,
|
|
149
|
+
redeemScript,
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
exports.P2SHMultisigSignatory = P2SHMultisigSignatory;
|
|
154
|
+
/** Signatory for P2SH m-of-n multisig using Schnorr signatures. */
|
|
155
|
+
const P2SHMultisigSignatorySchnorr = (m, pubkeys, sk, myPk, signerIndices, sigHashType) => {
|
|
156
|
+
return (ecc, input) => {
|
|
157
|
+
const redeemScript = script_js_1.Script.multisig(m, pubkeys);
|
|
158
|
+
const n = pubkeys.length;
|
|
159
|
+
if (signerIndices.size !== m) {
|
|
160
|
+
throw new Error(`signerIndices must have ${m} elements for ${m}-of-${n} multisig`);
|
|
161
|
+
}
|
|
162
|
+
if (ecc instanceof ecc_js_1.EccDummy) {
|
|
163
|
+
const dummySig = new Uint8Array(consts_js_1.SCHNORR_SIG_ESTIMATE_BYTES);
|
|
164
|
+
const signatures = Array(m)
|
|
165
|
+
.fill(undefined)
|
|
166
|
+
.map(() => dummySig);
|
|
167
|
+
return script_js_1.Script.multisigSpend({
|
|
168
|
+
signatures,
|
|
169
|
+
redeemScript,
|
|
170
|
+
pubkeyIndices: signerIndices,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
const preimage = input.sigHashPreimage(sigHashType);
|
|
174
|
+
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
175
|
+
const sig = ecc.schnorrSign(sk, sighash);
|
|
176
|
+
const sigFlagged = flagSignature(sig, sigHashType);
|
|
177
|
+
const myIndex = pubkeys.findIndex(pk => pk.length === myPk.length && pk.every((b, i) => b === myPk[i]));
|
|
178
|
+
if (myIndex < 0) {
|
|
179
|
+
throw new Error('Signer pubkey not found in multisig pubkeys');
|
|
180
|
+
}
|
|
181
|
+
if (!signerIndices.has(myIndex)) {
|
|
182
|
+
throw new Error(`Signer index ${myIndex} not in signerIndices ${[
|
|
183
|
+
...signerIndices,
|
|
184
|
+
].join(',')}`);
|
|
185
|
+
}
|
|
186
|
+
const sortedIndices = [...signerIndices].sort((a, b) => a - b);
|
|
187
|
+
const signatures = sortedIndices.map(idx => idx === myIndex ? sigFlagged : undefined);
|
|
188
|
+
return script_js_1.Script.multisigSpend({
|
|
189
|
+
signatures,
|
|
190
|
+
redeemScript,
|
|
191
|
+
pubkeyIndices: signerIndices,
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
exports.P2SHMultisigSignatorySchnorr = P2SHMultisigSignatorySchnorr;
|
|
41
196
|
/** Signatory for a P2PK input. Always uses Schnorr signatures */
|
|
42
197
|
const P2PKSignatory = (sk, sigHashType) => {
|
|
43
198
|
return (ecc, input) => {
|
package/dist/signatories.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signatories.js","sourceRoot":"","sources":["../src/signatories.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,mEAAmE;AACnE,sEAAsE;;;
|
|
1
|
+
{"version":3,"file":"signatories.js","sourceRoot":"","sources":["../src/signatories.ts"],"names":[],"mappings":"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"}
|
package/dist/tx.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Bytes } from './io/bytes.js';
|
|
2
2
|
import { Writer } from './io/writer.js';
|
|
3
|
+
import { Ecc } from './ecc.js';
|
|
3
4
|
import { Script } from './script.js';
|
|
5
|
+
import { SigHashType } from './sigHashType.js';
|
|
4
6
|
/**
|
|
5
7
|
* Default value for nSequence of inputs if left undefined; this opts out of
|
|
6
8
|
* BIP68 relative lock-time, and if all inputs have this value, nLockTime is
|
|
@@ -107,6 +109,44 @@ export declare class Tx {
|
|
|
107
109
|
* `CTxOut`-shaped bytes.
|
|
108
110
|
*/
|
|
109
111
|
static tryDeserExact(data: Uint8Array): Tx | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* Add a signature to a partially-signed multisig input.
|
|
114
|
+
* Verifies the signature against the sighash for each pubkey in the
|
|
115
|
+
* redeem/output script and merges with existing signatures (which pubkey
|
|
116
|
+
* signed is inferred from verification).
|
|
117
|
+
*/
|
|
118
|
+
addMultisigSignature(params: {
|
|
119
|
+
inputIdx: number;
|
|
120
|
+
signature: Uint8Array;
|
|
121
|
+
signData: SignData;
|
|
122
|
+
ecc?: Ecc;
|
|
123
|
+
}): Tx;
|
|
124
|
+
/**
|
|
125
|
+
* Like {@link addMultisigSignature}, but computes the signature from a
|
|
126
|
+
* secret key: BIP143 preimage (or legacy if `sigHashType` is legacy),
|
|
127
|
+
* Schnorr for Schnorr-format multisig spends and ECDSA otherwise.
|
|
128
|
+
*/
|
|
129
|
+
addMultisigSignatureFromKey(params: {
|
|
130
|
+
inputIdx: number;
|
|
131
|
+
sk: Uint8Array;
|
|
132
|
+
signData: SignData;
|
|
133
|
+
/** Defaults to {@link ALL_BIP143}. */
|
|
134
|
+
sigHashType?: SigHashType;
|
|
135
|
+
ecc?: Ecc;
|
|
136
|
+
}): Tx;
|
|
137
|
+
/**
|
|
138
|
+
* Whether every **multisig** input (identified from `signData`) has enough
|
|
139
|
+
* signatures in its scriptSig. Non-multisig inputs are ignored.
|
|
140
|
+
*
|
|
141
|
+
* If the transaction has **no** multisig inputs, this returns `true` (there
|
|
142
|
+
* is nothing multisig-specific left to satisfy). That can look surprising on
|
|
143
|
+
* a non-multisig or otherwise incomplete tx; this helper is **not** a
|
|
144
|
+
* broadcast-readiness check. Call sites are expected to use it only in
|
|
145
|
+
* multisig / PSBT flows where the question is specifically whether multisig
|
|
146
|
+
* inputs still need more signatures (including mixed txs: non-multisig
|
|
147
|
+
* inputs are finalized elsewhere).
|
|
148
|
+
*/
|
|
149
|
+
isFullySignedMultisig(): boolean;
|
|
110
150
|
}
|
|
111
151
|
export declare function readTxOutput(bytes: Bytes): TxOutput;
|
|
112
152
|
/** Write an outpoint to a Writer */
|
package/dist/tx.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC;;;;;;;IAOI;AACJ,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACrB;;;QAGI;IACJ,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,yCAAyC;AACzC,MAAM,WAAW,OAAO;IACpB,uCAAuC;IACvC,OAAO,EAAE,QAAQ,CAAC;IAClB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACrB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACrB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;QAGI;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,2CAA2C;AAC3C,qBAAa,EAAE;IACX,yBAAyB;IAClB,OAAO,EAAE,MAAM,CAAC;IACvB,mDAAmD;IAC5C,MAAM,EAAE,OAAO,EAAE,CAAC;IACzB,0CAA0C;IACnC,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC3B,uEAAuE;IAChE,QAAQ,EAAE,MAAM,CAAC;gBAEL,MAAM,CAAC,EAAE;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IAOD,uCAAuC;IAChC,GAAG,IAAI,UAAU;IAMxB,uCAAuC;IAChC,KAAK,IAAI,MAAM;IAItB,8CAA8C;IACvC,OAAO,IAAI,MAAM;IAMxB,uCAAuC;IAChC,KAAK,CAAC,MAAM,EAAE,MAAM;IAa3B,yCAAyC;WAC3B,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE;IAoCzC,yCAAyC;WAC3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE;IAItC;;;;;OAKG;IACI,IAAI,IAAI,MAAM;IAIrB;;;;;;;;;;;;;;;;;;OAkBG;WACW,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"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"}
|
package/dist/tx.js
CHANGED
|
@@ -15,8 +15,12 @@ const hex_js_1 = require("./io/hex.js");
|
|
|
15
15
|
const varsize_js_1 = require("./io/varsize.js");
|
|
16
16
|
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
17
17
|
const writerlength_js_1 = require("./io/writerlength.js");
|
|
18
|
+
const ecc_js_1 = require("./ecc.js");
|
|
18
19
|
const script_js_1 = require("./script.js");
|
|
19
20
|
const hash_js_1 = require("./hash.js");
|
|
21
|
+
const signatories_js_1 = require("./signatories.js");
|
|
22
|
+
const sigHashType_js_1 = require("./sigHashType.js");
|
|
23
|
+
const unsignedTx_js_1 = require("./unsignedTx.js");
|
|
20
24
|
/**
|
|
21
25
|
* Default value for nSequence of inputs if left undefined; this opts out of
|
|
22
26
|
* BIP68 relative lock-time, and if all inputs have this value, nLockTime is
|
|
@@ -165,6 +169,225 @@ class Tx {
|
|
|
165
169
|
return undefined;
|
|
166
170
|
}
|
|
167
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Add a signature to a partially-signed multisig input.
|
|
174
|
+
* Verifies the signature against the sighash for each pubkey in the
|
|
175
|
+
* redeem/output script and merges with existing signatures (which pubkey
|
|
176
|
+
* signed is inferred from verification).
|
|
177
|
+
*/
|
|
178
|
+
addMultisigSignature(params) {
|
|
179
|
+
const { inputIdx, signature, signData } = params;
|
|
180
|
+
const ecc = params.ecc ?? new ecc_js_1.Ecc();
|
|
181
|
+
const input = this.inputs[inputIdx];
|
|
182
|
+
if (!input.script || input.script.bytecode.length === 0) {
|
|
183
|
+
throw new Error(`Input ${inputIdx} has no scriptSig to add signature to`);
|
|
184
|
+
}
|
|
185
|
+
const isBare = signData.outputScript !== undefined &&
|
|
186
|
+
signData.redeemScript === undefined;
|
|
187
|
+
const parsed = isBare
|
|
188
|
+
? input.script.parseBareMultisigSpend(signData.outputScript)
|
|
189
|
+
: input.script.parseP2shMultisigSpend();
|
|
190
|
+
const txWithSignData = new Tx({
|
|
191
|
+
version: this.version,
|
|
192
|
+
inputs: this.inputs.map((inp, i) => i === inputIdx
|
|
193
|
+
? { ...copyTxInput(inp), signData }
|
|
194
|
+
: copyTxInput(inp)),
|
|
195
|
+
outputs: this.outputs,
|
|
196
|
+
locktime: this.locktime,
|
|
197
|
+
});
|
|
198
|
+
const unsignedTx = unsignedTx_js_1.UnsignedTx.fromTx(txWithSignData);
|
|
199
|
+
const inputAt = unsignedTx.inputAt(inputIdx);
|
|
200
|
+
const sigHashType = sigHashType_js_1.SigHashType.fromInt((signature[signature.length - 1] ?? 0) & 0xff) ?? sigHashType_js_1.ALL_BIP143;
|
|
201
|
+
const preimage = inputAt.sigHashPreimage(sigHashType);
|
|
202
|
+
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
203
|
+
const sigWithoutFlag = signature.slice(0, -1);
|
|
204
|
+
let pubkeyIndex = -1;
|
|
205
|
+
if (parsed.isSchnorr) {
|
|
206
|
+
for (let i = 0; i < parsed.pubkeys.length; i++) {
|
|
207
|
+
try {
|
|
208
|
+
ecc.schnorrVerify(sigWithoutFlag, sighash, parsed.pubkeys[i]);
|
|
209
|
+
pubkeyIndex = i;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
/* try next pubkey */
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (pubkeyIndex < 0) {
|
|
217
|
+
throw new Error('Schnorr signature does not verify for any pubkey in the multisig script');
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
for (let i = 0; i < parsed.pubkeys.length; i++) {
|
|
222
|
+
try {
|
|
223
|
+
ecc.ecdsaVerify(sigWithoutFlag, sighash, parsed.pubkeys[i]);
|
|
224
|
+
pubkeyIndex = i;
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
/* try next pubkey */
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (pubkeyIndex < 0) {
|
|
232
|
+
throw new Error('ECDSA signature does not verify for any pubkey in the multisig script');
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
const sigsByPubkey = Array(parsed.pubkeys.length).fill(undefined);
|
|
236
|
+
if (parsed.isSchnorr) {
|
|
237
|
+
const indices = parsed.pubkeyIndices;
|
|
238
|
+
const sortedIndices = [...indices].sort((a, b) => a - b);
|
|
239
|
+
for (let i = 0; i < parsed.signatures.length; i++) {
|
|
240
|
+
const sig = parsed.signatures[i];
|
|
241
|
+
if (sig !== undefined && i < sortedIndices.length) {
|
|
242
|
+
sigsByPubkey[sortedIndices[i]] = sig;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
for (const sig of parsed.signatures) {
|
|
248
|
+
if (sig === undefined)
|
|
249
|
+
continue;
|
|
250
|
+
const sigNoFlag = sig.slice(0, -1);
|
|
251
|
+
for (let i = 0; i < parsed.pubkeys.length; i++) {
|
|
252
|
+
try {
|
|
253
|
+
ecc.ecdsaVerify(sigNoFlag, sighash, parsed.pubkeys[i]);
|
|
254
|
+
sigsByPubkey[i] = sig;
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
/* try next pubkey */
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
sigsByPubkey[pubkeyIndex] = signature;
|
|
264
|
+
const nonNullSigs = sigsByPubkey.filter((s) => s !== undefined);
|
|
265
|
+
const sigsForScript = nonNullSigs.length >= parsed.numSignatures
|
|
266
|
+
? nonNullSigs.slice(0, parsed.numSignatures)
|
|
267
|
+
: [
|
|
268
|
+
...nonNullSigs,
|
|
269
|
+
...Array(parsed.numSignatures - nonNullSigs.length).fill(undefined),
|
|
270
|
+
];
|
|
271
|
+
const redeemScript = !isBare && 'redeemScript' in parsed
|
|
272
|
+
? parsed.redeemScript
|
|
273
|
+
: undefined;
|
|
274
|
+
const newScriptSig = parsed.isSchnorr
|
|
275
|
+
? (() => {
|
|
276
|
+
const signerIndices = new Set();
|
|
277
|
+
for (let i = 0; i < parsed.pubkeys.length &&
|
|
278
|
+
signerIndices.size < parsed.numSignatures; i++) {
|
|
279
|
+
if (sigsByPubkey[i] !== undefined)
|
|
280
|
+
signerIndices.add(i);
|
|
281
|
+
}
|
|
282
|
+
return isBare
|
|
283
|
+
? script_js_1.Script.multisigSpend({
|
|
284
|
+
signatures: sigsForScript,
|
|
285
|
+
pubkeyIndices: signerIndices,
|
|
286
|
+
numPubkeys: parsed.numPubkeys,
|
|
287
|
+
})
|
|
288
|
+
: script_js_1.Script.multisigSpend({
|
|
289
|
+
signatures: sigsForScript,
|
|
290
|
+
redeemScript,
|
|
291
|
+
pubkeyIndices: signerIndices,
|
|
292
|
+
});
|
|
293
|
+
})()
|
|
294
|
+
: script_js_1.Script.multisigSpend({
|
|
295
|
+
signatures: sigsForScript,
|
|
296
|
+
redeemScript,
|
|
297
|
+
});
|
|
298
|
+
const newInputs = this.inputs.map((inp, i) => i === inputIdx
|
|
299
|
+
? { ...copyTxInput(inp), script: newScriptSig }
|
|
300
|
+
: copyTxInput(inp));
|
|
301
|
+
return new Tx({
|
|
302
|
+
version: this.version,
|
|
303
|
+
inputs: newInputs,
|
|
304
|
+
outputs: this.outputs,
|
|
305
|
+
locktime: this.locktime,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Like {@link addMultisigSignature}, but computes the signature from a
|
|
310
|
+
* secret key: BIP143 preimage (or legacy if `sigHashType` is legacy),
|
|
311
|
+
* Schnorr for Schnorr-format multisig spends and ECDSA otherwise.
|
|
312
|
+
*/
|
|
313
|
+
addMultisigSignatureFromKey(params) {
|
|
314
|
+
const sigHashType = params.sigHashType ?? sigHashType_js_1.ALL_BIP143;
|
|
315
|
+
const ecc = params.ecc ?? new ecc_js_1.Ecc();
|
|
316
|
+
const { inputIdx, sk, signData } = params;
|
|
317
|
+
const input = this.inputs[inputIdx];
|
|
318
|
+
if (!input.script || input.script.bytecode.length === 0) {
|
|
319
|
+
throw new Error(`Input ${inputIdx} has no scriptSig to add signature to`);
|
|
320
|
+
}
|
|
321
|
+
const isBare = signData.outputScript !== undefined &&
|
|
322
|
+
signData.redeemScript === undefined;
|
|
323
|
+
const parsed = isBare
|
|
324
|
+
? input.script.parseBareMultisigSpend(signData.outputScript)
|
|
325
|
+
: input.script.parseP2shMultisigSpend();
|
|
326
|
+
const txWithSignData = new Tx({
|
|
327
|
+
version: this.version,
|
|
328
|
+
inputs: this.inputs.map((inp, i) => i === inputIdx
|
|
329
|
+
? { ...copyTxInput(inp), signData }
|
|
330
|
+
: copyTxInput(inp)),
|
|
331
|
+
outputs: this.outputs,
|
|
332
|
+
locktime: this.locktime,
|
|
333
|
+
});
|
|
334
|
+
const unsignedTx = unsignedTx_js_1.UnsignedTx.fromTx(txWithSignData);
|
|
335
|
+
const preimage = unsignedTx
|
|
336
|
+
.inputAt(inputIdx)
|
|
337
|
+
.sigHashPreimage(sigHashType);
|
|
338
|
+
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
339
|
+
const sig = parsed.isSchnorr
|
|
340
|
+
? ecc.schnorrSign(sk, sighash)
|
|
341
|
+
: ecc.ecdsaSign(sk, sighash);
|
|
342
|
+
const signature = (0, signatories_js_1.flagSignature)(sig, sigHashType);
|
|
343
|
+
return this.addMultisigSignature({
|
|
344
|
+
inputIdx,
|
|
345
|
+
signature,
|
|
346
|
+
signData,
|
|
347
|
+
ecc,
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Whether every **multisig** input (identified from `signData`) has enough
|
|
352
|
+
* signatures in its scriptSig. Non-multisig inputs are ignored.
|
|
353
|
+
*
|
|
354
|
+
* If the transaction has **no** multisig inputs, this returns `true` (there
|
|
355
|
+
* is nothing multisig-specific left to satisfy). That can look surprising on
|
|
356
|
+
* a non-multisig or otherwise incomplete tx; this helper is **not** a
|
|
357
|
+
* broadcast-readiness check. Call sites are expected to use it only in
|
|
358
|
+
* multisig / PSBT flows where the question is specifically whether multisig
|
|
359
|
+
* inputs still need more signatures (including mixed txs: non-multisig
|
|
360
|
+
* inputs are finalized elsewhere).
|
|
361
|
+
*/
|
|
362
|
+
isFullySignedMultisig() {
|
|
363
|
+
for (let i = 0; i < this.inputs.length; i++) {
|
|
364
|
+
const input = this.inputs[i];
|
|
365
|
+
const multisigScript = input.signData?.redeemScript !== undefined
|
|
366
|
+
? input.signData.redeemScript
|
|
367
|
+
: input.signData?.outputScript?.isMultisig()
|
|
368
|
+
? input.signData.outputScript
|
|
369
|
+
: undefined;
|
|
370
|
+
if (multisigScript === undefined) {
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
if (!input.script || input.script.bytecode.length === 0) {
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
try {
|
|
377
|
+
const parsed = input.signData?.redeemScript === undefined
|
|
378
|
+
? input.script.parseBareMultisigSpend(multisigScript)
|
|
379
|
+
: input.script.parseP2shMultisigSpend();
|
|
380
|
+
const sigCount = parsed.signatures.filter(s => s !== undefined).length;
|
|
381
|
+
if (sigCount < parsed.numSignatures) {
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
catch {
|
|
386
|
+
return false;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
return true;
|
|
390
|
+
}
|
|
168
391
|
}
|
|
169
392
|
exports.Tx = Tx;
|
|
170
393
|
function readTxOutput(bytes) {
|
package/dist/tx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/consts.ts
CHANGED
|
@@ -46,5 +46,18 @@ export const MAX_SCRIPTNUM_BYTE_SIZE = 8;
|
|
|
46
46
|
/** Max pubkeys per multisig script. Matches MAX_PUBKEYS_PER_MULTISIG in src/script/script.h. */
|
|
47
47
|
export const MAX_PUBKEYS_PER_MULTISIG = 20;
|
|
48
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Upper bound on ECDSA `vchSig` size (strict DER + sighash byte) for fee / size
|
|
51
|
+
* estimation with {@link EccDummy}. Matches script validation: DER ≤ 72 bytes,
|
|
52
|
+
* then one sighash byte → max 73. Slightly above typical sizes (~71–72) and
|
|
53
|
+
* above the wallet dummy (72-byte `vchSig` in Bitcoin ABC); avoids underestimating.
|
|
54
|
+
*
|
|
55
|
+
* Since 1 sat/byte is both the min fee and a typical fee, do not assume slack
|
|
56
|
+
*/
|
|
57
|
+
export const ECDSA_SIG_ESTIMATE_BYTES = 73;
|
|
58
|
+
|
|
59
|
+
/** Schnorr signature size in bytes including sighash flag, for fee estimation. */
|
|
60
|
+
export const SCHNORR_SIG_ESTIMATE_BYTES = 65;
|
|
61
|
+
|
|
49
62
|
// The size in bytes of a p2pkh output
|
|
50
63
|
export const P2PKH_OUTPUT_SIZE = 34;
|