@scure/btc-signer 1.0.0 โ 1.1.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 +43 -23
- package/index.d.ts +26 -6
- package/index.d.ts.map +1 -1
- package/index.js +87 -48
- package/index.js.map +1 -1
- package/index.ts +105 -65
- package/package.json +10 -13
package/README.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Audited & minimal library for creating, signing & decoding Bitcoin transactions.
|
|
4
4
|
|
|
5
|
+
- ๐ [**Audited**](#security) by an independent security firm
|
|
5
6
|
- โ๏ธ Create transactions, inputs, outputs, sign them
|
|
6
7
|
- ๐ก No network code: simplified audits and offline usage
|
|
7
8
|
- ๐ป Classic & SegWit: P2PK, P2PKH, P2WPKH, P2SH, P2WSH, P2MS
|
|
8
9
|
- ๐งช Schnorr & Taproot BIP340/BIP341: P2TR, P2TR-NS, P2TR-MS
|
|
9
10
|
- ๐จ BIP174 PSBT
|
|
10
11
|
- ๐ฅ Multisig support
|
|
11
|
-
- ๐ [**Audited**](#security) by an independent security firm
|
|
12
12
|
- ๐ชถ ~2600 lines
|
|
13
13
|
|
|
14
14
|
Initial development has been funded by [Ryan Shea](https://shea.io). Check out [the demo](https://signerdemo.micro-btc.dev/) & [its github](https://github.com/shea256/micro-btc-web-demo).
|
|
@@ -17,26 +17,26 @@ Initial development has been funded by [Ryan Shea](https://shea.io). Check out [
|
|
|
17
17
|
|
|
18
18
|
> **scure** โ secure, independently audited packages for every use case.
|
|
19
19
|
|
|
20
|
-
-
|
|
20
|
+
- Minimal or zero dependencies
|
|
21
|
+
- Releases are signed with PGP keys and built transparently with NPM provenance
|
|
21
22
|
- Check out all libraries:
|
|
22
23
|
[base](https://github.com/paulmillr/scure-base),
|
|
23
24
|
[bip32](https://github.com/paulmillr/scure-bip32),
|
|
24
25
|
[bip39](https://github.com/paulmillr/scure-bip39),
|
|
25
|
-
[btc-signer](https://github.com/paulmillr/scure-btc-signer)
|
|
26
|
-
|
|
27
|
-
Also, check out all _web3 utility libraries:_ [micro-eth-signer](https://github.com/paulmillr/micro-eth-signer), [scure-btc-signer](https://github.com/paulmillr/scure-btc-signer), [micro-sol-signer](https://github.com/paulmillr/micro-sol-signer), [micro-web3](https://github.com/paulmillr/micro-web3), [tx-tor-broadcaster](https://github.com/paulmillr/tx-tor-broadcaster)
|
|
26
|
+
[btc-signer](https://github.com/paulmillr/scure-btc-signer),
|
|
27
|
+
[starknet](https://github.com/paulmillr/scure-starknet)
|
|
28
28
|
|
|
29
29
|
## Usage
|
|
30
30
|
|
|
31
|
-
Use NPM for browser / node.js:
|
|
32
|
-
|
|
33
31
|
> npm install @scure/btc-signer
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
We support all major platforms and runtimes.
|
|
34
|
+
For [Deno](https://deno.land), ensure to use [npm specifier](https://deno.land/manual@v1.28.0/node/npm_specifiers).
|
|
35
|
+
For React Native, you may need a [polyfill for crypto.getRandomValues](https://github.com/LinusU/react-native-get-random-values).
|
|
36
36
|
|
|
37
37
|
```ts
|
|
38
38
|
import * as btc from '@scure/btc-signer';
|
|
39
|
-
// import * as btc from "npm:@scure/btc-signer@0.
|
|
39
|
+
// import * as btc from "npm:@scure/btc-signer@1.0.0"; // Deno
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
### Table of Contents
|
|
@@ -621,10 +621,10 @@ const epriv =
|
|
|
621
621
|
'tprv8ZgxMBicQKsPd9TeAdPADNnSyH9SSUUbTVeFszDE23Ki6TBB5nCefAdHkK8Fm3qMQR6sHwA56zqRmKmxnHk37JkiFzvncDqoKmPWubu7hDF';
|
|
622
622
|
const hdkey = bip32.HDKey.fromExtendedKey(epriv, testnet.bip32);
|
|
623
623
|
// const seed = 'cUkG8i1RFfWGWy5ziR11zJ5V4U4W3viSFCfyJmZnvQaUsd1xuF3T';
|
|
624
|
-
const tx = new btc.Transaction(
|
|
624
|
+
const tx = new btc.Transaction();
|
|
625
625
|
// A creator creating a PSBT for a transaction which creates the following outputs:
|
|
626
|
-
tx.addOutput({ script: '0014d85c2b71d0060b09c9886aeb815e50991dda124d', amount: '1.49990000' });
|
|
627
|
-
tx.addOutput({ script: '001400aea9a2e5f0f876a588df5546e8742d1d87008f', amount: '1.00000000' });
|
|
626
|
+
tx.addOutput({ script: '0014d85c2b71d0060b09c9886aeb815e50991dda124d', amount: btc.Decimal.decode('1.49990000') });
|
|
627
|
+
tx.addOutput({ script: '001400aea9a2e5f0f876a588df5546e8742d1d87008f', amount: btc.Decimal.decode('1.00000000') });
|
|
628
628
|
// and spends the following inputs:
|
|
629
629
|
tx.addInput({
|
|
630
630
|
txid: '75ddabb27b8845f5247975c8a5ba7c6f336c4570708ebe230caf6db5217ae858',
|
|
@@ -696,7 +696,7 @@ const psbt2 = tx2.toPSBT();
|
|
|
696
696
|
// An updater which adds SIGHASH_ALL to the above PSBT must create this PSBT:
|
|
697
697
|
const tx3 = btc.Transaction.fromPSBT(psbt2);
|
|
698
698
|
for (let i = 0; i < tx3.inputs.length; i++)
|
|
699
|
-
tx3.updateInput(i, { sighashType: btc.
|
|
699
|
+
tx3.updateInput(i, { sighashType: btc.SigHash.ALL });
|
|
700
700
|
const psbt3 = tx3.toPSBT();
|
|
701
701
|
/*
|
|
702
702
|
Given the above updated PSBT, a signer that supports SIGHASH_ALL for P2PKH and P2WPKH spends and uses RFC6979 for nonce generation and has the following keys:
|
|
@@ -836,16 +836,36 @@ deepStrictEqual(
|
|
|
836
836
|
|
|
837
837
|
## Security
|
|
838
838
|
|
|
839
|
-
The library has been audited
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
839
|
+
The library has been independently audited:
|
|
840
|
+
|
|
841
|
+
- at version 0.3.0, in Feb 2023, by [cure53](https://cure53.de)
|
|
842
|
+
- PDFs: [online](https://cure53.de/audit-report_micro-btc-signer.pdf), [offline](./audit/2023-02-21-cure53-audit-report.pdf)
|
|
843
|
+
- [Changes since audit](https://github.com/paulmillr/scure-btc-signer/compare/0.3.0..main).
|
|
844
|
+
- The audit has been funded by [Ryan Shea](https://shea.io)
|
|
845
|
+
|
|
846
|
+
### Supply chain security
|
|
847
|
+
|
|
848
|
+
1. **Commits** are signed with PGP keys, to prevent forgery. Make sure to verify commit signatures.
|
|
849
|
+
2. **Releases** are transparent and built on GitHub CI. Make sure to verify [provenance](https://docs.npmjs.com/generating-provenance-statements) logs
|
|
850
|
+
3. **Rare releasing** is followed.
|
|
851
|
+
The less often it is done, the less code dependents would need to audit
|
|
852
|
+
4. **Dependencies** are minimal:
|
|
853
|
+
- All deps are prevented from automatic updates and have locked-down version ranges. Every update is checked with `npm-diff`
|
|
854
|
+
- Updates themselves are rare, to ensure rogue updates are not catched accidentally
|
|
855
|
+
- [noble-hashes](https://github.com/paulmillr/noble-hashes) provides hashing functionality
|
|
856
|
+
- [noble-curves](https://github.com/paulmillr/noble-curves) provides elliptic curve cryptography
|
|
857
|
+
- [scure-base](https://github.com/paulmillr/scure-base) provides bech32 / base64
|
|
858
|
+
- [micro-packed](https://github.com/paulmillr/micro-packed) provides binary encoding - it has not been audited
|
|
859
|
+
5. devDependencies are only used if you want to contribute to the repo. They are disabled for end-users:
|
|
860
|
+
- scure-bip32, micro-packed-debugger and micro-should are developed by the same author and follow identical security practices
|
|
861
|
+
- prettier (linter), fast-check (property-based testing) and typescript are used for code quality, vector generation and ts compilation. The packages are big, which makes it hard to audit their source code thoroughly and fully
|
|
862
|
+
|
|
863
|
+
We consider infrastructure attacks like rogue NPM modules very important;
|
|
864
|
+
that's why it's crucial to minimize the amount of 3rd-party dependencies & native bindings.
|
|
865
|
+
If your app uses 500 dependencies, any dep could get hacked and you'll be
|
|
866
|
+
downloading malware with every install. Our goal is to minimize this attack vector.
|
|
867
|
+
|
|
868
|
+
If you see anything unusual: investigate and report.
|
|
849
869
|
|
|
850
870
|
## License
|
|
851
871
|
|
package/index.d.ts
CHANGED
|
@@ -1007,7 +1007,7 @@ export declare const RawPSBTV2: P.CoderType<({
|
|
|
1007
1007
|
readonly proprietary: readonly [252, P.CoderType<Uint8Array>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
|
|
1008
1008
|
}>[];
|
|
1009
1009
|
} & {})>;
|
|
1010
|
-
type P2Ret = {
|
|
1010
|
+
export type P2Ret = {
|
|
1011
1011
|
type: string;
|
|
1012
1012
|
script: Bytes;
|
|
1013
1013
|
address?: string;
|
|
@@ -1088,7 +1088,6 @@ type TaprootLeaf = {
|
|
|
1088
1088
|
script: Bytes;
|
|
1089
1089
|
hash: Bytes;
|
|
1090
1090
|
path: Bytes[];
|
|
1091
|
-
tapInternalKey?: Bytes;
|
|
1092
1091
|
};
|
|
1093
1092
|
export declare const TAPROOT_UNSPENDABLE_KEY: Uint8Array;
|
|
1094
1093
|
export type P2TROut = P2Ret & {
|
|
@@ -1103,7 +1102,7 @@ export declare function p2tr(internalPubKey?: Bytes | string, tree?: TaprootScri
|
|
|
1103
1102
|
pubKeyHash: number;
|
|
1104
1103
|
scriptHash: number;
|
|
1105
1104
|
wif: number;
|
|
1106
|
-
},
|
|
1105
|
+
}, allowUnknownOutputs?: boolean): P2TROut;
|
|
1107
1106
|
type OutTRNSType = {
|
|
1108
1107
|
type: 'tr_ns';
|
|
1109
1108
|
pubkeys: Bytes[];
|
|
@@ -1135,7 +1134,7 @@ export declare function programToWitness(version: number, data: Bytes, network?:
|
|
|
1135
1134
|
pubKeyHash: number;
|
|
1136
1135
|
scriptHash: number;
|
|
1137
1136
|
wif: number;
|
|
1138
|
-
}): string
|
|
1137
|
+
}): `${Lowercase<string>}1${string}`;
|
|
1139
1138
|
export declare function WIF(network?: {
|
|
1140
1139
|
bech32: string;
|
|
1141
1140
|
pubKeyHash: number;
|
|
@@ -1151,6 +1150,10 @@ export declare function Address(network?: {
|
|
|
1151
1150
|
encode(from: P.UnwrapCoder<typeof OutScript>): string;
|
|
1152
1151
|
decode(address: string): P.UnwrapCoder<typeof OutScript>;
|
|
1153
1152
|
};
|
|
1153
|
+
/**
|
|
1154
|
+
* Internal, exported only for backwards-compat. Use `SigHash` instead.
|
|
1155
|
+
* @deprecated
|
|
1156
|
+
*/
|
|
1154
1157
|
export declare enum SignatureHash {
|
|
1155
1158
|
DEFAULT = 0,
|
|
1156
1159
|
ALL = 1,
|
|
@@ -1158,7 +1161,16 @@ export declare enum SignatureHash {
|
|
|
1158
1161
|
SINGLE = 3,
|
|
1159
1162
|
ANYONECANPAY = 128
|
|
1160
1163
|
}
|
|
1161
|
-
export declare
|
|
1164
|
+
export declare enum SigHash {
|
|
1165
|
+
DEFAULT = 0,
|
|
1166
|
+
ALL = 1,
|
|
1167
|
+
NONE = 2,
|
|
1168
|
+
SINGLE = 3,
|
|
1169
|
+
DEFAULT_ANYONECANPAY = 128,
|
|
1170
|
+
ALL_ANYONECANPAY = 129,
|
|
1171
|
+
NONE_ANYONECANPAY = 130,
|
|
1172
|
+
SINGLE_ANYONECANPAY = 131
|
|
1173
|
+
}
|
|
1162
1174
|
export declare const _sortPubkeys: (pubkeys: Bytes[]) => Uint8Array[];
|
|
1163
1175
|
export type TransactionInput = P.UnwrapCoder<typeof PSBTInputCoder>;
|
|
1164
1176
|
export type TransactionInputUpdate = ExtendType<TransactionInput, {
|
|
@@ -1194,8 +1206,12 @@ export type TxOpts = {
|
|
|
1194
1206
|
version?: number;
|
|
1195
1207
|
lockTime?: number;
|
|
1196
1208
|
PSBTVersion?: number;
|
|
1209
|
+
/** @deprecated Use `allowUnknownOutputs` */
|
|
1197
1210
|
allowUnknowOutput?: boolean;
|
|
1211
|
+
allowUnknownOutputs?: boolean;
|
|
1212
|
+
/** @deprecated Use `allowUnknownInputs` */
|
|
1198
1213
|
allowUnknowInput?: boolean;
|
|
1214
|
+
allowUnknownInputs?: boolean;
|
|
1199
1215
|
disableScriptCheck?: boolean;
|
|
1200
1216
|
bip174jsCompat?: boolean;
|
|
1201
1217
|
allowLegacyWitnessUtxo?: boolean;
|
|
@@ -1205,8 +1221,12 @@ declare function validateOpts(opts: TxOpts): Readonly<{
|
|
|
1205
1221
|
version: number;
|
|
1206
1222
|
lockTime: number;
|
|
1207
1223
|
PSBTVersion: number;
|
|
1224
|
+
/** @deprecated Use `allowUnknownOutputs` */
|
|
1208
1225
|
allowUnknowOutput?: boolean | undefined;
|
|
1226
|
+
allowUnknownOutputs?: boolean | undefined;
|
|
1227
|
+
/** @deprecated Use `allowUnknownInputs` */
|
|
1209
1228
|
allowUnknowInput?: boolean | undefined;
|
|
1229
|
+
allowUnknownInputs?: boolean | undefined;
|
|
1210
1230
|
disableScriptCheck?: boolean | undefined;
|
|
1211
1231
|
bip174jsCompat?: boolean | undefined;
|
|
1212
1232
|
allowLegacyWitnessUtxo?: boolean | undefined;
|
|
@@ -1344,7 +1364,7 @@ export declare class Transaction {
|
|
|
1344
1364
|
private preimageWitnessV1;
|
|
1345
1365
|
private prevOut;
|
|
1346
1366
|
private inputType;
|
|
1347
|
-
signIdx(privateKey: Signer, idx: number, allowedSighash?:
|
|
1367
|
+
signIdx(privateKey: Signer, idx: number, allowedSighash?: SigHash[], _auxRand?: Bytes): boolean;
|
|
1348
1368
|
sign(privateKey: Signer, allowedSighash?: number[], _auxRand?: Bytes): number;
|
|
1349
1369
|
finalizeIdx(idx: number): void;
|
|
1350
1370
|
finalize(): void;
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
package/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { secp256k1 as _secp, schnorr } from '@noble/curves/secp256k1';
|
|
3
3
|
import { sha256 } from '@noble/hashes/sha256';
|
|
4
4
|
import { ripemd160 } from '@noble/hashes/ripemd160';
|
|
5
|
-
import { hex,
|
|
5
|
+
import { hex, base58check as _b58, bech32, bech32m } from '@scure/base';
|
|
6
6
|
import * as P from 'micro-packed';
|
|
7
7
|
const { ProjectivePoint: ProjPoint, sign: _signECDSA, getPublicKey: _pubECDSA } = _secp;
|
|
8
8
|
const CURVE_ORDER = _secp.CURVE.n;
|
|
@@ -431,6 +431,7 @@ export function OpToNum(op, bytesLimit = 4, forceMinimal = true) {
|
|
|
431
431
|
return;
|
|
432
432
|
}
|
|
433
433
|
}
|
|
434
|
+
return;
|
|
434
435
|
}
|
|
435
436
|
// BTC specific variable length integer encoding
|
|
436
437
|
// https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer
|
|
@@ -746,10 +747,10 @@ const PSBTInputCoder = P.validate(PSBTKeyMap(PSBTInput), (i) => {
|
|
|
746
747
|
if (i.partialSig && !i.partialSig.length)
|
|
747
748
|
throw new Error('Empty partialSig');
|
|
748
749
|
if (i.partialSig)
|
|
749
|
-
for (const [k
|
|
750
|
+
for (const [k] of i.partialSig)
|
|
750
751
|
validatePubkey(k, PubT.ecdsa);
|
|
751
752
|
if (i.bip32Derivation)
|
|
752
|
-
for (const [k
|
|
753
|
+
for (const [k] of i.bip32Derivation)
|
|
753
754
|
validatePubkey(k, PubT.ecdsa);
|
|
754
755
|
// Locktime = unsigned little endian integer greater than or equal to 500000000 representing
|
|
755
756
|
if (i.requiredTimeLocktime !== undefined && i.requiredTimeLocktime < 500000000)
|
|
@@ -791,7 +792,7 @@ const PSBTInputCoder = P.validate(PSBTKeyMap(PSBTInput), (i) => {
|
|
|
791
792
|
});
|
|
792
793
|
const PSBTOutputCoder = P.validate(PSBTKeyMap(PSBTOutput), (o) => {
|
|
793
794
|
if (o.bip32Derivation)
|
|
794
|
-
for (const [k
|
|
795
|
+
for (const [k] of o.bip32Derivation)
|
|
795
796
|
validatePubkey(k, PubT.ecdsa);
|
|
796
797
|
return o;
|
|
797
798
|
});
|
|
@@ -966,7 +967,9 @@ const OutPK = {
|
|
|
966
967
|
},
|
|
967
968
|
decode: (to) => (to.type === 'pk' ? [to.pubkey, 'CHECKSIG'] : undefined),
|
|
968
969
|
};
|
|
970
|
+
// @ts-ignore
|
|
969
971
|
export const p2pk = (pubkey, network = NETWORK) => {
|
|
972
|
+
// network is unused
|
|
970
973
|
if (!isValidPubkey(pubkey, PubT.ecdsa))
|
|
971
974
|
throw new Error('P2PK: invalid publicKey');
|
|
972
975
|
return {
|
|
@@ -1121,34 +1124,47 @@ export function taprootListToTree(taprootList) {
|
|
|
1121
1124
|
const last = lst[0];
|
|
1122
1125
|
return (last?.childs || last);
|
|
1123
1126
|
}
|
|
1124
|
-
function checkTaprootScript(script,
|
|
1127
|
+
function checkTaprootScript(script, internalPubKey, allowUnknownOutputs = false) {
|
|
1125
1128
|
const out = OutScript.decode(script);
|
|
1126
|
-
if (out.type === 'unknown' &&
|
|
1129
|
+
if (out.type === 'unknown' && allowUnknownOutputs)
|
|
1127
1130
|
return;
|
|
1128
1131
|
if (!['tr_ns', 'tr_ms'].includes(out.type))
|
|
1129
1132
|
throw new Error(`P2TR: invalid leaf script=${out.type}`);
|
|
1133
|
+
const outms = out;
|
|
1134
|
+
if (!allowUnknownOutputs && outms.pubkeys) {
|
|
1135
|
+
for (const p of outms.pubkeys) {
|
|
1136
|
+
if (P.equalBytes(p, TAPROOT_UNSPENDABLE_KEY))
|
|
1137
|
+
throw new Error('Unspendable taproot key in leaf script');
|
|
1138
|
+
// It's likely a mistake at this point:
|
|
1139
|
+
// 1. p2tr(A, p2tr_ns(2, [A, B])) == p2tr(A, p2tr_pk(B)) (A or B key)
|
|
1140
|
+
// but will take more space and fees.
|
|
1141
|
+
// 2. For multi-sig p2tr(A, p2tr_ns(2, [A, B, C])) it's probably a security issue:
|
|
1142
|
+
// User creates 2 of 3 multisig of keys [A, B, C],
|
|
1143
|
+
// but key A always can spend whole output without signatures from other keys.
|
|
1144
|
+
// p2tr(A, p2tr_ns(2, [B, C, D])) is ok: A or (B and C) or (B and D) or (C and D)
|
|
1145
|
+
if (P.equalBytes(p, internalPubKey)) {
|
|
1146
|
+
throw new Error('Using P2TR with leaf script with same key as internal key is not supported');
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1130
1150
|
}
|
|
1131
|
-
function taprootHashTree(tree,
|
|
1151
|
+
function taprootHashTree(tree, internalPubKey, allowUnknownOutputs = false) {
|
|
1132
1152
|
if (!tree)
|
|
1133
1153
|
throw new Error('taprootHashTree: empty tree');
|
|
1134
1154
|
if (Array.isArray(tree) && tree.length === 1)
|
|
1135
1155
|
tree = tree[0];
|
|
1136
1156
|
// Terminal node (leaf)
|
|
1137
1157
|
if (!Array.isArray(tree)) {
|
|
1138
|
-
const { leafVersion: version, script: leafScript
|
|
1158
|
+
const { leafVersion: version, script: leafScript } = tree;
|
|
1139
1159
|
// Earliest tree walk where we can validate tapScripts
|
|
1140
1160
|
if (tree.tapLeafScript || (tree.tapMerkleRoot && !P.equalBytes(tree.tapMerkleRoot, P.EMPTY)))
|
|
1141
1161
|
throw new Error('P2TR: tapRoot leafScript cannot have tree');
|
|
1142
|
-
// Just to be sure that it is spendable
|
|
1143
|
-
if (tapInternalKey && P.equalBytes(tapInternalKey, TAPROOT_UNSPENDABLE_KEY))
|
|
1144
|
-
throw new Error('P2TR: tapRoot leafScript cannot have unspendble key');
|
|
1145
1162
|
const script = typeof leafScript === 'string' ? hex.decode(leafScript) : leafScript;
|
|
1146
1163
|
if (!isBytes(script))
|
|
1147
1164
|
throw new Error(`checkScript: wrong script type=${script}`);
|
|
1148
|
-
checkTaprootScript(script,
|
|
1165
|
+
checkTaprootScript(script, internalPubKey, allowUnknownOutputs);
|
|
1149
1166
|
return {
|
|
1150
1167
|
type: 'leaf',
|
|
1151
|
-
tapInternalKey,
|
|
1152
1168
|
version,
|
|
1153
1169
|
script,
|
|
1154
1170
|
hash: tapLeafHash(script, version),
|
|
@@ -1161,8 +1177,8 @@ function taprootHashTree(tree, allowUnknowOutput = false) {
|
|
|
1161
1177
|
throw new Error('hashTree: non binary tree!');
|
|
1162
1178
|
// branch
|
|
1163
1179
|
// Both nodes should exist
|
|
1164
|
-
const left = taprootHashTree(tree[0],
|
|
1165
|
-
const right = taprootHashTree(tree[1],
|
|
1180
|
+
const left = taprootHashTree(tree[0], internalPubKey, allowUnknownOutputs);
|
|
1181
|
+
const right = taprootHashTree(tree[1], internalPubKey, allowUnknownOutputs);
|
|
1166
1182
|
// We cannot swap left/right here, since it will change structure of tree
|
|
1167
1183
|
let [lH, rH] = [left.hash, right.hash];
|
|
1168
1184
|
if (_cmpBytes(rH, lH) === -1)
|
|
@@ -1203,7 +1219,7 @@ export const TAPROOT_UNSPENDABLE_KEY = sha256(ProjPoint.BASE.toRawBytes(false));
|
|
|
1203
1219
|
// Works as key OR tree.
|
|
1204
1220
|
// If we only have tree, need to add unspendable key, otherwise
|
|
1205
1221
|
// complex multisig wallet can be spent by owner of key only. See TAPROOT_UNSPENDABLE_KEY
|
|
1206
|
-
export function p2tr(internalPubKey, tree, network = NETWORK,
|
|
1222
|
+
export function p2tr(internalPubKey, tree, network = NETWORK, allowUnknownOutputs = false) {
|
|
1207
1223
|
// Unspendable
|
|
1208
1224
|
if (!internalPubKey && !tree)
|
|
1209
1225
|
throw new Error('p2tr: should have pubKey or scriptTree (or both)');
|
|
@@ -1212,7 +1228,9 @@ export function p2tr(internalPubKey, tree, network = NETWORK, allowUnknowOutput
|
|
|
1212
1228
|
: internalPubKey || TAPROOT_UNSPENDABLE_KEY;
|
|
1213
1229
|
if (!isValidPubkey(pubKey, PubT.schnorr))
|
|
1214
1230
|
throw new Error('p2tr: non-schnorr pubkey');
|
|
1215
|
-
let hashedTree = tree
|
|
1231
|
+
let hashedTree = tree
|
|
1232
|
+
? taprootAddPath(taprootHashTree(tree, pubKey, allowUnknownOutputs))
|
|
1233
|
+
: undefined;
|
|
1216
1234
|
const tapMerkleRoot = hashedTree ? hashedTree.hash : undefined;
|
|
1217
1235
|
const [tweakedPubkey, parity] = taprootTweakPubkey(pubKey, tapMerkleRoot || P.EMPTY);
|
|
1218
1236
|
let leaves;
|
|
@@ -1221,7 +1239,7 @@ export function p2tr(internalPubKey, tree, network = NETWORK, allowUnknowOutput
|
|
|
1221
1239
|
...l,
|
|
1222
1240
|
controlBlock: TaprootControlBlock.encode({
|
|
1223
1241
|
version: (l.version || TAP_LEAF_VERSION) + parity,
|
|
1224
|
-
internalKey:
|
|
1242
|
+
internalKey: pubKey,
|
|
1225
1243
|
merklePath: l.path,
|
|
1226
1244
|
}),
|
|
1227
1245
|
}));
|
|
@@ -1512,21 +1530,19 @@ export function Address(network = NETWORK) {
|
|
|
1512
1530
|
else if (version === 1 && data.length === 32)
|
|
1513
1531
|
return { type: 'tr', pubkey: data };
|
|
1514
1532
|
else
|
|
1515
|
-
throw new Error('
|
|
1533
|
+
throw new Error('Unknown witness program');
|
|
1516
1534
|
}
|
|
1517
|
-
const data =
|
|
1518
|
-
if (data.length !==
|
|
1535
|
+
const data = base58check.decode(address);
|
|
1536
|
+
if (data.length !== 21)
|
|
1519
1537
|
throw new Error('Invalid base58 address');
|
|
1520
1538
|
// Pay To Public Key Hash
|
|
1521
1539
|
if (data[0] === network.pubKeyHash) {
|
|
1522
|
-
|
|
1523
|
-
return { type: 'pkh', hash: bytes.slice(1, bytes.length - 4) };
|
|
1540
|
+
return { type: 'pkh', hash: data.slice(1) };
|
|
1524
1541
|
}
|
|
1525
1542
|
else if (data[0] === network.scriptHash) {
|
|
1526
|
-
const bytes = base58.decode(address);
|
|
1527
1543
|
return {
|
|
1528
1544
|
type: 'sh',
|
|
1529
|
-
hash:
|
|
1545
|
+
hash: data.slice(1),
|
|
1530
1546
|
};
|
|
1531
1547
|
}
|
|
1532
1548
|
throw new Error(`Invalid address prefix=${data[0]}`);
|
|
@@ -1534,6 +1550,10 @@ export function Address(network = NETWORK) {
|
|
|
1534
1550
|
};
|
|
1535
1551
|
}
|
|
1536
1552
|
// /Address
|
|
1553
|
+
/**
|
|
1554
|
+
* Internal, exported only for backwards-compat. Use `SigHash` instead.
|
|
1555
|
+
* @deprecated
|
|
1556
|
+
*/
|
|
1537
1557
|
export var SignatureHash;
|
|
1538
1558
|
(function (SignatureHash) {
|
|
1539
1559
|
SignatureHash[SignatureHash["DEFAULT"] = 0] = "DEFAULT";
|
|
@@ -1542,7 +1562,22 @@ export var SignatureHash;
|
|
|
1542
1562
|
SignatureHash[SignatureHash["SINGLE"] = 3] = "SINGLE";
|
|
1543
1563
|
SignatureHash[SignatureHash["ANYONECANPAY"] = 128] = "ANYONECANPAY";
|
|
1544
1564
|
})(SignatureHash || (SignatureHash = {}));
|
|
1545
|
-
export
|
|
1565
|
+
export var SigHash;
|
|
1566
|
+
(function (SigHash) {
|
|
1567
|
+
SigHash[SigHash["DEFAULT"] = 0] = "DEFAULT";
|
|
1568
|
+
SigHash[SigHash["ALL"] = 1] = "ALL";
|
|
1569
|
+
SigHash[SigHash["NONE"] = 2] = "NONE";
|
|
1570
|
+
SigHash[SigHash["SINGLE"] = 3] = "SINGLE";
|
|
1571
|
+
SigHash[SigHash["DEFAULT_ANYONECANPAY"] = 128] = "DEFAULT_ANYONECANPAY";
|
|
1572
|
+
SigHash[SigHash["ALL_ANYONECANPAY"] = 129] = "ALL_ANYONECANPAY";
|
|
1573
|
+
SigHash[SigHash["NONE_ANYONECANPAY"] = 130] = "NONE_ANYONECANPAY";
|
|
1574
|
+
SigHash[SigHash["SINGLE_ANYONECANPAY"] = 131] = "SINGLE_ANYONECANPAY";
|
|
1575
|
+
})(SigHash || (SigHash = {}));
|
|
1576
|
+
function validateSigHash(s) {
|
|
1577
|
+
if (typeof s !== 'number' || typeof SigHash[s] !== 'string')
|
|
1578
|
+
throw new Error(`Invalid SigHash=${s}`);
|
|
1579
|
+
return s;
|
|
1580
|
+
}
|
|
1546
1581
|
function unpackSighash(hashType) {
|
|
1547
1582
|
const masked = hashType & 0b0011111;
|
|
1548
1583
|
return {
|
|
@@ -1585,17 +1620,21 @@ function getTaprootKeys(privKey, pubKey, internalKey, merkleRoot = P.EMPTY) {
|
|
|
1585
1620
|
}
|
|
1586
1621
|
return { privKey, pubKey };
|
|
1587
1622
|
}
|
|
1588
|
-
|
|
1589
|
-
const isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;
|
|
1623
|
+
const toStr = {}.toString;
|
|
1590
1624
|
function validateOpts(opts) {
|
|
1591
|
-
if (
|
|
1625
|
+
if (opts !== undefined && toStr.call(opts) !== '[object Object]')
|
|
1592
1626
|
throw new Error(`Wrong object type for transaction options: ${opts}`);
|
|
1593
1627
|
const _opts = {
|
|
1594
1628
|
...opts,
|
|
1629
|
+
// Defaults
|
|
1595
1630
|
version: def(opts.version, DEFAULT_VERSION),
|
|
1596
1631
|
lockTime: def(opts.lockTime, 0),
|
|
1597
1632
|
PSBTVersion: def(opts.PSBTVersion, 0),
|
|
1598
|
-
};
|
|
1633
|
+
};
|
|
1634
|
+
if (typeof _opts.allowUnknowInput !== 'undefined')
|
|
1635
|
+
opts.allowUnknownInputs = _opts.allowUnknowInput;
|
|
1636
|
+
if (typeof _opts.allowUnknowOutput !== 'undefined')
|
|
1637
|
+
opts.allowUnknownOutputs = _opts.allowUnknowOutput;
|
|
1599
1638
|
// 0 and -1 happens in tests
|
|
1600
1639
|
if (![-1, 0, 1, 2].includes(_opts.version))
|
|
1601
1640
|
throw new Error(`Unknown version: ${_opts.version}`);
|
|
@@ -1608,8 +1647,8 @@ function validateOpts(opts) {
|
|
|
1608
1647
|
throw new Error(`Unknown PSBT version ${_opts.PSBTVersion}`);
|
|
1609
1648
|
// Flags
|
|
1610
1649
|
for (const k of [
|
|
1611
|
-
'
|
|
1612
|
-
'
|
|
1650
|
+
'allowUnknownOutputs',
|
|
1651
|
+
'allowUnknownInputs',
|
|
1613
1652
|
'disableScriptCheck',
|
|
1614
1653
|
'bip174jsCompat',
|
|
1615
1654
|
'allowLegacyWitnessUtxo',
|
|
@@ -1844,8 +1883,7 @@ export class Transaction {
|
|
|
1844
1883
|
out += 4 * CompactSizeLen.encode(this.inputs.length).length;
|
|
1845
1884
|
out += 4 * CompactSizeLen.encode(this.outputs.length).length;
|
|
1846
1885
|
for (const i of this.inputs)
|
|
1847
|
-
|
|
1848
|
-
out += 160 + 4 * VarBytes.encode(i.finalScriptSig).length;
|
|
1886
|
+
out += 160 + 4 * VarBytes.encode(i.finalScriptSig || P.EMPTY).length;
|
|
1849
1887
|
for (const o of outputs)
|
|
1850
1888
|
out += 32 + 4 * VarBytes.encode(o.script).length;
|
|
1851
1889
|
if (this.hasWitnesses) {
|
|
@@ -1976,9 +2014,9 @@ export class Transaction {
|
|
|
1976
2014
|
res = mergeKeyMap(PSBTOutput, res, cur, allowedFields);
|
|
1977
2015
|
PSBTOutputCoder.encode(res);
|
|
1978
2016
|
if (res.script &&
|
|
1979
|
-
!this.opts.
|
|
2017
|
+
!this.opts.allowUnknownOutputs &&
|
|
1980
2018
|
OutScript.decode(res.script).type === 'unknown') {
|
|
1981
|
-
throw new Error('Transaction/output: unknown output script type, there is a chance that input is unspendable. Pass
|
|
2019
|
+
throw new Error('Transaction/output: unknown output script type, there is a chance that input is unspendable. Pass allowUnknownScript=true, if you sure');
|
|
1982
2020
|
}
|
|
1983
2021
|
if (!this.opts.disableScriptCheck)
|
|
1984
2022
|
checkScript(res.script, res.redeemScript, res.witnessScript);
|
|
@@ -2123,13 +2161,13 @@ export class Transaction {
|
|
|
2123
2161
|
prevOut(input) {
|
|
2124
2162
|
if (input.nonWitnessUtxo) {
|
|
2125
2163
|
if (input.index === undefined)
|
|
2126
|
-
throw new Error('
|
|
2164
|
+
throw new Error('Unknown input index');
|
|
2127
2165
|
return input.nonWitnessUtxo.outputs[input.index];
|
|
2128
2166
|
}
|
|
2129
2167
|
else if (input.witnessUtxo)
|
|
2130
2168
|
return input.witnessUtxo;
|
|
2131
2169
|
else
|
|
2132
|
-
throw new Error('Cannot find previous output info
|
|
2170
|
+
throw new Error('Cannot find previous output info');
|
|
2133
2171
|
}
|
|
2134
2172
|
inputType(input) {
|
|
2135
2173
|
let txType = 'legacy';
|
|
@@ -2225,6 +2263,8 @@ export class Transaction {
|
|
|
2225
2263
|
// Just for compat with bitcoinjs-lib, so users won't face unexpected behaviour.
|
|
2226
2264
|
if (!allowedSighash)
|
|
2227
2265
|
allowedSighash = [inputType.defaultSighash];
|
|
2266
|
+
else
|
|
2267
|
+
allowedSighash.forEach(validateSigHash);
|
|
2228
2268
|
const sighash = inputType.sighash;
|
|
2229
2269
|
if (!allowedSighash.includes(sighash)) {
|
|
2230
2270
|
throw new Error(`Input with not allowed sigHash=${sighash}. Allowed: ${allowedSighash.join(', ')}`);
|
|
@@ -2233,7 +2273,7 @@ export class Transaction {
|
|
|
2233
2273
|
// however this was because of bug in bitcoin-core, which remains here because of consensus.
|
|
2234
2274
|
// If this is absolutely neccessary for your case, please open issue.
|
|
2235
2275
|
// We disable it to avoid complicated workflow where SINGLE will block adding new outputs
|
|
2236
|
-
const {
|
|
2276
|
+
const { sigOutputs } = this.inputSighash(idx);
|
|
2237
2277
|
if (sigOutputs === SignatureHash.SINGLE && idx >= this.outputs.length) {
|
|
2238
2278
|
throw new Error(`Input with sighash SINGLE, but there is no output with corresponding index=${idx}`);
|
|
2239
2279
|
}
|
|
@@ -2255,7 +2295,7 @@ export class Transaction {
|
|
|
2255
2295
|
// otherwise sign as is. bitcoinjs implementation always wants tweaked
|
|
2256
2296
|
// priv key to be provided
|
|
2257
2297
|
const { pubKey, privKey } = getTaprootKeys(privateKey, schnorrPub, input.tapInternalKey, merkleRoot);
|
|
2258
|
-
const [taprootPubKey,
|
|
2298
|
+
const [taprootPubKey, _] = taprootTweakPubkey(input.tapInternalKey, merkleRoot);
|
|
2259
2299
|
if (P.equalBytes(taprootPubKey, pubKey)) {
|
|
2260
2300
|
const hash = this.preimageWitnessV1(idx, prevOutScript, sighash, amount);
|
|
2261
2301
|
const sig = concat(schnorr.sign(hash, privKey, _auxRand), sighash !== SignatureHash.DEFAULT ? new Uint8Array([sighash]) : P.EMPTY);
|
|
@@ -2265,20 +2305,19 @@ export class Transaction {
|
|
|
2265
2305
|
}
|
|
2266
2306
|
if (input.tapLeafScript) {
|
|
2267
2307
|
input.tapScriptSig = input.tapScriptSig || [];
|
|
2268
|
-
for (const [
|
|
2308
|
+
for (const [_, _script] of input.tapLeafScript) {
|
|
2269
2309
|
const script = _script.subarray(0, -1);
|
|
2270
2310
|
const scriptDecoded = Script.decode(script);
|
|
2271
2311
|
const ver = _script[_script.length - 1];
|
|
2272
2312
|
const hash = tapLeafHash(script, ver);
|
|
2273
|
-
|
|
2274
|
-
);
|
|
2275
|
-
const pos = scriptDecoded.findIndex((i) => isBytes(i) && P.equalBytes(i, pubKey));
|
|
2313
|
+
// NOTE: no need to tweak internal key here, since we don't support nested p2tr
|
|
2314
|
+
const pos = scriptDecoded.findIndex((i) => isBytes(i) && P.equalBytes(i, schnorrPub));
|
|
2276
2315
|
// Skip if there is no public key in tapLeafScript
|
|
2277
2316
|
if (pos === -1)
|
|
2278
2317
|
continue;
|
|
2279
2318
|
const msg = this.preimageWitnessV1(idx, prevOutScript, sighash, amount, undefined, script, ver);
|
|
2280
|
-
const sig = concat(schnorr.sign(msg,
|
|
2281
|
-
this.updateInput(idx, { tapScriptSig: [[{ pubKey:
|
|
2319
|
+
const sig = concat(schnorr.sign(msg, privateKey, _auxRand), sighash !== SignatureHash.DEFAULT ? new Uint8Array([sighash]) : P.EMPTY);
|
|
2320
|
+
this.updateInput(idx, { tapScriptSig: [[{ pubKey: schnorrPub, leafHash: hash }, sig]] }, true);
|
|
2282
2321
|
signed = true;
|
|
2283
2322
|
}
|
|
2284
2323
|
}
|
|
@@ -2388,7 +2427,7 @@ export class Transaction {
|
|
|
2388
2427
|
if (signatures.length !== outScript.pubkeys.length)
|
|
2389
2428
|
continue;
|
|
2390
2429
|
}
|
|
2391
|
-
else if (outScript.type === 'unknown' && this.opts.
|
|
2430
|
+
else if (outScript.type === 'unknown' && this.opts.allowUnknownInputs) {
|
|
2392
2431
|
// Trying our best to sign what we can
|
|
2393
2432
|
const scriptDecoded = Script.decode(script);
|
|
2394
2433
|
signatures = scriptSig
|
|
@@ -2454,7 +2493,7 @@ export class Transaction {
|
|
|
2454
2493
|
inputScript = P.EMPTY;
|
|
2455
2494
|
witness = [input.partialSig[0][1], input.partialSig[0][0]];
|
|
2456
2495
|
}
|
|
2457
|
-
else if (inputType.last.type === 'unknown' && !this.opts.
|
|
2496
|
+
else if (inputType.last.type === 'unknown' && !this.opts.allowUnknownInputs)
|
|
2458
2497
|
throw new Error('Unknown inputs not allowed');
|
|
2459
2498
|
// Create final scripts (generic part)
|
|
2460
2499
|
let finalScriptSig, finalScriptWitness;
|