@did-btcr2/bitcoin 0.3.0 → 0.3.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/dist/cjs/client/rest/block.js.map +1 -1
- package/dist/cjs/client/rest/index.js +2 -11
- package/dist/cjs/client/rest/index.js.map +1 -1
- package/dist/cjs/client/rpc/json-rpc.js +2 -2
- package/dist/cjs/client/rpc/json-rpc.js.map +1 -1
- package/dist/cjs/constants.js +5 -5
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/musig2.js +74 -0
- package/dist/cjs/musig2.js.map +1 -0
- package/dist/cjs/types.js +11 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/client/rest/block.js.map +1 -1
- package/dist/esm/client/rest/index.js +2 -11
- package/dist/esm/client/rest/index.js.map +1 -1
- package/dist/esm/client/rpc/json-rpc.js +2 -2
- package/dist/esm/client/rpc/json-rpc.js.map +1 -1
- package/dist/esm/constants.js +5 -5
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/musig2.js +74 -0
- package/dist/esm/musig2.js.map +1 -0
- package/dist/esm/types.js +11 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/types/client/rest/address.d.ts +1 -1
- package/dist/types/client/rest/address.d.ts.map +1 -1
- package/dist/types/client/rest/block.d.ts +1 -2
- package/dist/types/client/rest/block.d.ts.map +1 -1
- package/dist/types/client/rest/index.d.ts +1 -84
- package/dist/types/client/rest/index.d.ts.map +1 -1
- package/dist/types/client/rest/transaction.d.ts +1 -1
- package/dist/types/client/rest/transaction.d.ts.map +1 -1
- package/dist/types/constants.d.ts +5 -5
- package/dist/types/musig2.d.ts +44 -0
- package/dist/types/musig2.d.ts.map +1 -0
- package/dist/types/types.d.ts +83 -1
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +6 -3
- package/src/client/rest/address.ts +1 -1
- package/src/client/rest/block.ts +1 -2
- package/src/client/rest/index.ts +3 -91
- package/src/client/rest/transaction.ts +1 -1
- package/src/client/rpc/json-rpc.ts +2 -2
- package/src/constants.ts +5 -5
- package/src/musig2.ts +117 -0
- package/src/types.ts +91 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../../../src/client/rest/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../../../src/client/rest/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACf,GAAG,CAA8C;IAEzD,YAAY,GAAgD;QAC1D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,KAAK;QAChB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAkB;QACpD,sEAAsE;QACtE,IAAG,CAAC,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,gBAAgB,CAAC,wDAAwD,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9G,CAAC;QAED,2CAA2C;QAC3C,SAAS,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,CAAC;QAC1C,IAAG,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,qBAAqB;QACrB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,SAAS,EAAE,EAAE,CAAY,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,MAAc;QACjC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,iBAAiB,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import { MethodError } from '@did-btcr2/common';
|
|
2
|
+
import { DEFAULT_BITCOIN_NETWORK_CONFIG } from '../../constants.js';
|
|
2
3
|
import { BitcoinAddress } from './address.js';
|
|
3
4
|
import { BitcoinBlock } from './block.js';
|
|
4
5
|
import { BitcoinTransaction } from './transaction.js';
|
|
5
|
-
import {
|
|
6
|
-
;
|
|
7
|
-
export class RestClientConfig {
|
|
8
|
-
host;
|
|
9
|
-
headers;
|
|
10
|
-
constructor({ host, headers }) {
|
|
11
|
-
this.host = host;
|
|
12
|
-
this.headers = headers;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
;
|
|
6
|
+
import { RestClientConfig } from '../../types.js';
|
|
16
7
|
/**
|
|
17
8
|
* Implements a strongly-typed BitcoinRestClient to connect to remote bitcoin node via REST API.
|
|
18
9
|
* @class BitcoinRestClient
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/rest/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,8 +19,8 @@ export class JsonRpcTransport {
|
|
|
19
19
|
this.url = u.toString().replace(/\/+$/, '');
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
catch {
|
|
23
|
-
console.error(
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(`Invalid URL in Bitcoin RPC config: ${this.url}`, error);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-rpc.js","sourceRoot":"","sources":["../../../../src/client/rpc/json-rpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,OAAO,gBAAgB;IACnB,GAAG,CAAS;IACZ,UAAU,CAAU;IACpB,EAAE,GAAG,CAAC,CAAC;IAEf,YAAY,GAAoB;QAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAErE,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,SAAS,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,QAAQ,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC7G,6CAA6C;oBAC7C,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;oBAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;oBACjC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAAC,
|
|
1
|
+
{"version":3,"file":"json-rpc.js","sourceRoot":"","sources":["../../../../src/client/rpc/json-rpc.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/constants.js
CHANGED
|
@@ -5,21 +5,21 @@ export const DEFAULT_BLOCK_CONFIRMATIONS = 7;
|
|
|
5
5
|
export const TXIN_WITNESS_COINBASE = '0000000000000000000000000000000000000000000000000000000000000000';
|
|
6
6
|
export const GENESIS_TX_ID = '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b';
|
|
7
7
|
export const DEFAULT_BITCOIN_NETWORK_CONFIG = {
|
|
8
|
-
|
|
8
|
+
bitcoin: {
|
|
9
9
|
rpc: undefined,
|
|
10
|
-
rest: { host: 'https://mempool.
|
|
10
|
+
rest: { host: 'https://mempool.holdings/api' }
|
|
11
11
|
},
|
|
12
12
|
testnet3: {
|
|
13
13
|
rpc: undefined,
|
|
14
|
-
rest: { host: 'https://mempool.
|
|
14
|
+
rest: { host: 'https://mempool.holdings/testnet/api' }
|
|
15
15
|
},
|
|
16
16
|
testnet4: {
|
|
17
17
|
rpc: undefined,
|
|
18
|
-
rest: { host: 'https://mempool.
|
|
18
|
+
rest: { host: 'https://mempool.holdings/testnet4/api' }
|
|
19
19
|
},
|
|
20
20
|
signet: {
|
|
21
21
|
rpc: undefined,
|
|
22
|
-
rest: { host: 'https://mempool.
|
|
22
|
+
rest: { host: 'https://mempool.holdings/signet/api' }
|
|
23
23
|
},
|
|
24
24
|
mutinynet: {
|
|
25
25
|
rpc: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,kEAAkE,CAAC;AACxG,MAAM,CAAC,MAAM,aAAa,GAAG,kEAAkE,CAAC;AAChG,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAG;QACR,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,kEAAkE,CAAC;AACxG,MAAM,CAAC,MAAM,aAAa,GAAG,kEAAkE,CAAC;AAChG,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAG;QACR,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE;KAChD;IACD,QAAQ,EAAG;QACT,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,sCAAsC,EAAE;KACxD;IACD,QAAQ,EAAG;QACT,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,uCAAuC,EAAE;KACzD;IACD,MAAM,EAAI;QACR,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,qCAAqC,EAAE;KACvD;IACD,SAAS,EAAG;QACV,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,2BAA2B,EAAE;KAC7C;IACD,OAAO,EAAG;QACR,GAAG,EAAI;YACL,OAAO,EAAc,SAAS;YAC9B,IAAI,EAAiB,wBAAwB;YAC7C,IAAI,EAAiB,KAAK;YAC1B,QAAQ,EAAa,WAAW;YAChC,QAAQ,EAAa,WAAW;YAChC,kBAAkB,EAAG,IAAI;YACzB,OAAO,EAAc,QAAQ;SAC9B;QACD,IAAI,EAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE;KACzC;CACO,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Secp256k1SecretKey } from '@did-btcr2/keypair';
|
|
2
|
+
import { schnorr } from '@noble/curves/secp256k1';
|
|
3
|
+
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
4
|
+
import { CURVE, ProjectivePoint } from '@noble/secp256k1';
|
|
5
|
+
import { payments } from 'bitcoinjs-lib';
|
|
6
|
+
import { taggedHash } from 'bitcoinjs-lib/src/crypto';
|
|
7
|
+
export class MuSig2Participant {
|
|
8
|
+
secretKey;
|
|
9
|
+
publicKey;
|
|
10
|
+
nonce;
|
|
11
|
+
noncePub;
|
|
12
|
+
constructor(secretKey) {
|
|
13
|
+
this.secretKey = secretKey ?? Secp256k1SecretKey.random();
|
|
14
|
+
this.publicKey = schnorr.getPublicKey(this.secretKey);
|
|
15
|
+
}
|
|
16
|
+
generateNonce() {
|
|
17
|
+
this.nonce = Secp256k1SecretKey.random();
|
|
18
|
+
this.noncePub = ProjectivePoint.fromPrivateKey(this.nonce);
|
|
19
|
+
return {
|
|
20
|
+
sessionId: 'SESSION_ID',
|
|
21
|
+
beaconAddress: Buffer.from(this.publicKey).toString('hex'),
|
|
22
|
+
noncePoints: this.noncePub.toHex(true), // compressed
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
sign(message, aggregatedNonceHex) {
|
|
26
|
+
const R = ProjectivePoint.fromHex(aggregatedNonceHex);
|
|
27
|
+
const L = ProjectivePoint.fromHex(this.publicKey);
|
|
28
|
+
const e = taggedHash('BIP0340/challenge', new Uint8Array([
|
|
29
|
+
...R.toRawBytes(true),
|
|
30
|
+
...L.toRawBytes(true),
|
|
31
|
+
...message,
|
|
32
|
+
]));
|
|
33
|
+
const eNum = BigInt('0x' + bytesToHex(e));
|
|
34
|
+
const rNum = BigInt('0x' + bytesToHex(this.nonce));
|
|
35
|
+
const xNum = BigInt('0x' + bytesToHex(this.secretKey));
|
|
36
|
+
const s = (rNum + eNum * xNum) % CURVE.n;
|
|
37
|
+
return {
|
|
38
|
+
sessionId: crypto.randomUUID(),
|
|
39
|
+
beaconAddress: payments.p2tr({ internalPubkey: this.publicKey }).address || '',
|
|
40
|
+
txSig: s.toString(16).padStart(64, '0'),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class MuSig2Coordinator {
|
|
45
|
+
sessions = new Map();
|
|
46
|
+
receiveNonce(contrib) {
|
|
47
|
+
const session = this.sessions.get(contrib.sessionId);
|
|
48
|
+
session?.publicNonces.set(contrib.beaconAddress, contrib.noncePoints);
|
|
49
|
+
}
|
|
50
|
+
aggregateNonces(sessionId) {
|
|
51
|
+
const session = this.sessions.get(sessionId);
|
|
52
|
+
if (!session)
|
|
53
|
+
throw new Error('Session not found');
|
|
54
|
+
const points = Array.from(session.publicNonces.values()).map(nonceHex => ProjectivePoint.fromHex(nonceHex));
|
|
55
|
+
const aggregated = points.reduce((acc, pt) => acc.add(pt), ProjectivePoint.ZERO);
|
|
56
|
+
session.aggregatedNonce = aggregated.toHex();
|
|
57
|
+
return {
|
|
58
|
+
sessionId,
|
|
59
|
+
beaconAddress: session.beaconAddress,
|
|
60
|
+
aggregatedNoncePoints: session.aggregatedNonce,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
collectSignature(auth) {
|
|
64
|
+
const session = this.sessions.get(auth.sessionId);
|
|
65
|
+
if (session) {
|
|
66
|
+
session.partialSigs.set(auth.beaconAddress, auth.txSig);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
finalizeTransaction(psbt) {
|
|
70
|
+
// Combine partial signatures (assuming MuSig2 multi-party logic handled externally)
|
|
71
|
+
return psbt.toHex();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=musig2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"musig2.js","sourceRoot":"","sources":["../../src/musig2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAS,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAQ,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AA8BtD,MAAM,OAAO,iBAAiB;IACrB,SAAS,CAAa;IACtB,SAAS,CAAa;IACtB,KAAK,CAAc;IACnB,QAAQ,CAAS;IAExB,YAAY,SAAsB;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAEM,aAAa;QAClB,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO;YACL,SAAS,EAAO,YAAY;YAC5B,aAAa,EAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC3D,WAAW,EAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa;SACzD,CAAC;IACJ,CAAC;IAEM,IAAI,CAAC,OAAmB,EAAE,kBAA0B;QACzD,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,UAAU,CAAC,mBAAmB,EAAE,IAAI,UAAU,CAAC;YACvD,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YACrB,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YACrB,GAAG,OAAO;SACX,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAEvD,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAEzC,OAAO;YACL,SAAS,EAAO,MAAM,CAAC,UAAU,EAAE;YACnC,aAAa,EAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;YAC/E,KAAK,EAAW,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;SACjD,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,iBAAiB;IACrB,QAAQ,GAA+B,IAAI,GAAG,EAAE,CAAC;IAEjD,YAAY,CAAC,OAAgC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;IAEM,eAAe,CAAC,SAAiB;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5G,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QACjF,OAAO,CAAC,eAAe,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QAE7C,OAAO;YACL,SAAS;YACT,aAAa,EAAW,OAAO,CAAC,aAAa;YAC7C,qBAAqB,EAAG,OAAO,CAAC,eAAe;SAChD,CAAC;IACJ,CAAC;IAEM,gBAAgB,CAAC,IAA+B;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAEM,mBAAmB,CAAC,IAAU;QACnC,oFAAoF;QACpF,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
|
package/dist/cjs/types.js
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
;
|
|
2
|
+
export class RestClientConfig {
|
|
3
|
+
host;
|
|
4
|
+
headers;
|
|
5
|
+
constructor({ host, headers }) {
|
|
6
|
+
this.host = host;
|
|
7
|
+
this.headers = headers;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
;
|
|
1
11
|
export class BitcoinRpcClientConfig {
|
|
2
12
|
network;
|
|
3
13
|
headers;
|
|
@@ -11,7 +21,7 @@ export class BitcoinRpcClientConfig {
|
|
|
11
21
|
allowDefaultWallet;
|
|
12
22
|
constructor(options = {
|
|
13
23
|
headers: {},
|
|
14
|
-
host: 'localhost',
|
|
24
|
+
host: 'http://localhost',
|
|
15
25
|
logger: console,
|
|
16
26
|
password: '',
|
|
17
27
|
timeout: 30000,
|
package/dist/cjs/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAkBC,CAAC;AAoDF,MAAM,OAAO,gBAAgB;IAC3B,IAAI,CAAS;IACb,OAAO,CAA6B;IACpC,YAAY,EAAE,IAAI,EAAE,OAAO,EAA0B;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAQA,CAAC;AAiDF,MAAM,OAAO,sBAAsB;IACjC,OAAO,CAAU;IACjB,OAAO,CAA0B;IACjC,IAAI,CAAU;IACd,MAAM,CAAO;IACb,QAAQ,CAAU;IAClB,OAAO,CAAU;IACjB,QAAQ,CAAU;IAClB,OAAO,CAAU;IACjB,MAAM,CAAU;IAChB,kBAAkB,CAAW;IAE7B,YAAY,UAA2B;QACrC,OAAO,EAAc,EAAE;QACvB,IAAI,EAAiB,kBAAkB;QACvC,MAAM,EAAe,OAAO;QAC5B,QAAQ,EAAa,EAAE;QACvB,OAAO,EAAc,KAAK;QAC1B,QAAQ,EAAa,EAAE;QACvB,OAAO,EAAc,QAAQ;QAC7B,MAAM,EAAe,EAAE;QACvB,kBAAkB,EAAG,KAAK;KAC3B;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,OAAyB;QAChD,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAiZA,CAAC;AAKD,CAAC;AA2gBF;;;;GAIG;AACH,MAAM,CAAN,IAAY,cAgBX;AAhBD,WAAY,cAAc;IACtB,iEAAiE;IACjE,iDAAO,CAAA;IACP,6DAA6D;IAC7D,mDAAQ,CAAA;IACR;;;;OAIG;IACH,yDAAW,CAAA;IACX;;;OAGG;IACH,iEAAe,CAAA;AACnB,CAAC,EAhBW,cAAc,KAAd,cAAc,QAgBzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../../../src/client/rest/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../../../src/client/rest/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACf,GAAG,CAA8C;IAEzD,YAAY,GAAgD;QAC1D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,KAAK;QAChB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAkB;QACpD,sEAAsE;QACtE,IAAG,CAAC,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,gBAAgB,CAAC,wDAAwD,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9G,CAAC;QAED,2CAA2C;QAC3C,SAAS,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,CAAC;QAC1C,IAAG,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,qBAAqB;QACrB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,SAAS,EAAE,EAAE,CAAY,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,MAAc;QACjC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,iBAAiB,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import { MethodError } from '@did-btcr2/common';
|
|
2
|
+
import { DEFAULT_BITCOIN_NETWORK_CONFIG } from '../../constants.js';
|
|
2
3
|
import { BitcoinAddress } from './address.js';
|
|
3
4
|
import { BitcoinBlock } from './block.js';
|
|
4
5
|
import { BitcoinTransaction } from './transaction.js';
|
|
5
|
-
import {
|
|
6
|
-
;
|
|
7
|
-
export class RestClientConfig {
|
|
8
|
-
host;
|
|
9
|
-
headers;
|
|
10
|
-
constructor({ host, headers }) {
|
|
11
|
-
this.host = host;
|
|
12
|
-
this.headers = headers;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
;
|
|
6
|
+
import { RestClientConfig } from '../../types.js';
|
|
16
7
|
/**
|
|
17
8
|
* Implements a strongly-typed BitcoinRestClient to connect to remote bitcoin node via REST API.
|
|
18
9
|
* @class BitcoinRestClient
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAmC,MAAM,gBAAgB,CAAC;AAGnF;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;;;OAIG;IACK,OAAO,CAAmB;IAElC;;;OAGG;IACI,WAAW,CAAqB;IAEvC;;;OAGG;IACI,KAAK,CAAe;IAE3B;;;OAGG;IACI,OAAO,CAAiB;IAE/B;;;OAGG;IACI,GAAG,GAAgD,IAAI,CAAC,IAAI,CAAC;IAEpE,YAAY,MAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,OAAO,CAAC,MAAyB;QAC7C,OAAO,IAAI,iBAAiB,CAAC,MAAM,IAAI,8BAA8B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAqB;QACxE,oCAAoC;QACpC,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QAErD,wCAAwC;QACxC,MAAM,KAAK,KAAK,CAAC;QAEjB,gCAAgC;QAChC,MAAM,WAAW,GAAG;YAClB,MAAM;YACN,OAAO,EAAG,OAAO,IAAI;gBACnB,cAAc,EAAG,kBAAkB;gBACnC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;aACvB;SACK,CAAC;QAET,4DAA4D;QAC5D,IAAG,IAAI,EAAE,CAAC;YACR,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,mBAAmB;QACnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,WAAW,CAAiB,CAAC;QAE/D,iDAAiD;QACjD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,KAAK,YAAY;YAC5E,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE;YACvB,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE1B,4DAA4D;QAC5D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,WAAW,CACnB,cAAc,GAAG,YAAY,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,UAAU,EAAE,EACvE,qBAAqB,EACrB,EAAE,IAAI,EAAE,QAAQ,EAAE,CACnB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -19,8 +19,8 @@ export class JsonRpcTransport {
|
|
|
19
19
|
this.url = u.toString().replace(/\/+$/, '');
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
catch {
|
|
23
|
-
console.error(
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(`Invalid URL in Bitcoin RPC config: ${this.url}`, error);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-rpc.js","sourceRoot":"","sources":["../../../../src/client/rpc/json-rpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,OAAO,gBAAgB;IACnB,GAAG,CAAS;IACZ,UAAU,CAAU;IACpB,EAAE,GAAG,CAAC,CAAC;IAEf,YAAY,GAAoB;QAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAErE,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,SAAS,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,QAAQ,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC7G,6CAA6C;oBAC7C,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;oBAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;oBACjC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAAC,
|
|
1
|
+
{"version":3,"file":"json-rpc.js","sourceRoot":"","sources":["../../../../src/client/rpc/json-rpc.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/constants.js
CHANGED
|
@@ -5,21 +5,21 @@ export const DEFAULT_BLOCK_CONFIRMATIONS = 7;
|
|
|
5
5
|
export const TXIN_WITNESS_COINBASE = '0000000000000000000000000000000000000000000000000000000000000000';
|
|
6
6
|
export const GENESIS_TX_ID = '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b';
|
|
7
7
|
export const DEFAULT_BITCOIN_NETWORK_CONFIG = {
|
|
8
|
-
|
|
8
|
+
bitcoin: {
|
|
9
9
|
rpc: undefined,
|
|
10
|
-
rest: { host: 'https://mempool.
|
|
10
|
+
rest: { host: 'https://mempool.holdings/api' }
|
|
11
11
|
},
|
|
12
12
|
testnet3: {
|
|
13
13
|
rpc: undefined,
|
|
14
|
-
rest: { host: 'https://mempool.
|
|
14
|
+
rest: { host: 'https://mempool.holdings/testnet/api' }
|
|
15
15
|
},
|
|
16
16
|
testnet4: {
|
|
17
17
|
rpc: undefined,
|
|
18
|
-
rest: { host: 'https://mempool.
|
|
18
|
+
rest: { host: 'https://mempool.holdings/testnet4/api' }
|
|
19
19
|
},
|
|
20
20
|
signet: {
|
|
21
21
|
rpc: undefined,
|
|
22
|
-
rest: { host: 'https://mempool.
|
|
22
|
+
rest: { host: 'https://mempool.holdings/signet/api' }
|
|
23
23
|
},
|
|
24
24
|
mutinynet: {
|
|
25
25
|
rpc: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,kEAAkE,CAAC;AACxG,MAAM,CAAC,MAAM,aAAa,GAAG,kEAAkE,CAAC;AAChG,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAG;QACR,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,kEAAkE,CAAC;AACxG,MAAM,CAAC,MAAM,aAAa,GAAG,kEAAkE,CAAC;AAChG,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAG;QACR,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE;KAChD;IACD,QAAQ,EAAG;QACT,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,sCAAsC,EAAE;KACxD;IACD,QAAQ,EAAG;QACT,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,uCAAuC,EAAE;KACzD;IACD,MAAM,EAAI;QACR,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,qCAAqC,EAAE;KACvD;IACD,SAAS,EAAG;QACV,GAAG,EAAI,SAAS;QAChB,IAAI,EAAG,EAAE,IAAI,EAAE,2BAA2B,EAAE;KAC7C;IACD,OAAO,EAAG;QACR,GAAG,EAAI;YACL,OAAO,EAAc,SAAS;YAC9B,IAAI,EAAiB,wBAAwB;YAC7C,IAAI,EAAiB,KAAK;YAC1B,QAAQ,EAAa,WAAW;YAChC,QAAQ,EAAa,WAAW;YAChC,kBAAkB,EAAG,IAAI;YACzB,OAAO,EAAc,QAAQ;SAC9B;QACD,IAAI,EAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE;KACzC;CACO,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Secp256k1SecretKey } from '@did-btcr2/keypair';
|
|
2
|
+
import { schnorr } from '@noble/curves/secp256k1';
|
|
3
|
+
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
4
|
+
import { CURVE, ProjectivePoint } from '@noble/secp256k1';
|
|
5
|
+
import { payments } from 'bitcoinjs-lib';
|
|
6
|
+
import { taggedHash } from 'bitcoinjs-lib/src/crypto';
|
|
7
|
+
export class MuSig2Participant {
|
|
8
|
+
secretKey;
|
|
9
|
+
publicKey;
|
|
10
|
+
nonce;
|
|
11
|
+
noncePub;
|
|
12
|
+
constructor(secretKey) {
|
|
13
|
+
this.secretKey = secretKey ?? Secp256k1SecretKey.random();
|
|
14
|
+
this.publicKey = schnorr.getPublicKey(this.secretKey);
|
|
15
|
+
}
|
|
16
|
+
generateNonce() {
|
|
17
|
+
this.nonce = Secp256k1SecretKey.random();
|
|
18
|
+
this.noncePub = ProjectivePoint.fromPrivateKey(this.nonce);
|
|
19
|
+
return {
|
|
20
|
+
sessionId: 'SESSION_ID',
|
|
21
|
+
beaconAddress: Buffer.from(this.publicKey).toString('hex'),
|
|
22
|
+
noncePoints: this.noncePub.toHex(true), // compressed
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
sign(message, aggregatedNonceHex) {
|
|
26
|
+
const R = ProjectivePoint.fromHex(aggregatedNonceHex);
|
|
27
|
+
const L = ProjectivePoint.fromHex(this.publicKey);
|
|
28
|
+
const e = taggedHash('BIP0340/challenge', new Uint8Array([
|
|
29
|
+
...R.toRawBytes(true),
|
|
30
|
+
...L.toRawBytes(true),
|
|
31
|
+
...message,
|
|
32
|
+
]));
|
|
33
|
+
const eNum = BigInt('0x' + bytesToHex(e));
|
|
34
|
+
const rNum = BigInt('0x' + bytesToHex(this.nonce));
|
|
35
|
+
const xNum = BigInt('0x' + bytesToHex(this.secretKey));
|
|
36
|
+
const s = (rNum + eNum * xNum) % CURVE.n;
|
|
37
|
+
return {
|
|
38
|
+
sessionId: crypto.randomUUID(),
|
|
39
|
+
beaconAddress: payments.p2tr({ internalPubkey: this.publicKey }).address || '',
|
|
40
|
+
txSig: s.toString(16).padStart(64, '0'),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class MuSig2Coordinator {
|
|
45
|
+
sessions = new Map();
|
|
46
|
+
receiveNonce(contrib) {
|
|
47
|
+
const session = this.sessions.get(contrib.sessionId);
|
|
48
|
+
session?.publicNonces.set(contrib.beaconAddress, contrib.noncePoints);
|
|
49
|
+
}
|
|
50
|
+
aggregateNonces(sessionId) {
|
|
51
|
+
const session = this.sessions.get(sessionId);
|
|
52
|
+
if (!session)
|
|
53
|
+
throw new Error('Session not found');
|
|
54
|
+
const points = Array.from(session.publicNonces.values()).map(nonceHex => ProjectivePoint.fromHex(nonceHex));
|
|
55
|
+
const aggregated = points.reduce((acc, pt) => acc.add(pt), ProjectivePoint.ZERO);
|
|
56
|
+
session.aggregatedNonce = aggregated.toHex();
|
|
57
|
+
return {
|
|
58
|
+
sessionId,
|
|
59
|
+
beaconAddress: session.beaconAddress,
|
|
60
|
+
aggregatedNoncePoints: session.aggregatedNonce,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
collectSignature(auth) {
|
|
64
|
+
const session = this.sessions.get(auth.sessionId);
|
|
65
|
+
if (session) {
|
|
66
|
+
session.partialSigs.set(auth.beaconAddress, auth.txSig);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
finalizeTransaction(psbt) {
|
|
70
|
+
// Combine partial signatures (assuming MuSig2 multi-party logic handled externally)
|
|
71
|
+
return psbt.toHex();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=musig2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"musig2.js","sourceRoot":"","sources":["../../src/musig2.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.js
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
;
|
|
2
|
+
export class RestClientConfig {
|
|
3
|
+
host;
|
|
4
|
+
headers;
|
|
5
|
+
constructor({ host, headers }) {
|
|
6
|
+
this.host = host;
|
|
7
|
+
this.headers = headers;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
;
|
|
1
11
|
export class BitcoinRpcClientConfig {
|
|
2
12
|
network;
|
|
3
13
|
headers;
|
|
@@ -11,7 +21,7 @@ export class BitcoinRpcClientConfig {
|
|
|
11
21
|
allowDefaultWallet;
|
|
12
22
|
constructor(options = {
|
|
13
23
|
headers: {},
|
|
14
|
-
host: 'localhost',
|
|
24
|
+
host: 'http://localhost',
|
|
15
25
|
logger: console,
|
|
16
26
|
password: '',
|
|
17
27
|
timeout: 30000,
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAkBC,CAAC;AAoDF,MAAM,OAAO,gBAAgB;IAC3B,IAAI,CAAS;IACb,OAAO,CAA6B;IACpC,YAAY,EAAE,IAAI,EAAE,OAAO,EAA0B;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAQA,CAAC;AAiDF,MAAM,OAAO,sBAAsB;IACjC,OAAO,CAAU;IACjB,OAAO,CAA0B;IACjC,IAAI,CAAU;IACd,MAAM,CAAO;IACb,QAAQ,CAAU;IAClB,OAAO,CAAU;IACjB,QAAQ,CAAU;IAClB,OAAO,CAAU;IACjB,MAAM,CAAU;IAChB,kBAAkB,CAAW;IAE7B,YAAY,UAA2B;QACrC,OAAO,EAAc,EAAE;QACvB,IAAI,EAAiB,kBAAkB;QACvC,MAAM,EAAe,OAAO;QAC5B,QAAQ,EAAa,EAAE;QACvB,OAAO,EAAc,KAAK;QAC1B,QAAQ,EAAa,EAAE;QACvB,OAAO,EAAc,QAAQ;QAC7B,MAAM,EAAe,EAAE;QACvB,kBAAkB,EAAG,KAAK;KAC3B;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,OAAyB;QAChD,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAiZA,CAAC;AAKD,CAAC;AA2gBF;;;;GAIG;AACH,MAAM,CAAN,IAAY,cAgBX;AAhBD,WAAY,cAAc;IACtB,iEAAiE;IACjE,iDAAO,CAAA;IACP,6DAA6D;IAC7D,mDAAQ,CAAA;IACR;;;;OAIG;IACH,yDAAW,CAAA;IACX;;;OAGG;IACH,iEAAe,CAAA;AACnB,CAAC,EAhBW,cAAc,KAAd,cAAc,QAgBzB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AddressInfo, AddressUtxo, RawTransactionRest, RestApiCallParams } from '
|
|
1
|
+
import { AddressInfo, AddressUtxo, RawTransactionRest, RestApiCallParams } from '../../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Implements a strongly-typed BitcoinRest to connect to remote bitcoin node via REST API for address-related operations.
|
|
4
4
|
* @class BitcoinAddress
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../../src/client/rest/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../../src/client/rest/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEjG;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAA8C;gBAE7C,GAAG,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,GAAG,CAAC;IAI5D;;;;;;OAMG;IACU,MAAM,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAIpF;;;;;OAKG;IACU,eAAe,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3E;;;;;OAKG;IACU,aAAa,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAI3F;;;;;;;OAOG;IACU,OAAO,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIvE;;;;;;OAMG;IACU,eAAe,CAAC,mBAAmB,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAQpH;;;;;OAKG;IACU,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;CAGhF"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { BlockResponse, GetBlockParams } from '../../types.js';
|
|
2
|
-
import { RestApiCallParams } from './index.js';
|
|
1
|
+
import { RestApiCallParams, BlockResponse, GetBlockParams } from '../../types.js';
|
|
3
2
|
/**
|
|
4
3
|
* Implements a strongly-typed BitcoinRest to connect to remote bitcoin node via REST API for block-related operations.
|
|
5
4
|
* @class BitcoinBlock
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/client/rest/block.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAW,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/client/rest/block.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAW,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE3F;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAA8C;gBAE7C,GAAG,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,GAAG,CAAC;IAI5D;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC;;;;;;;OAOG;IACU,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAgB3F;;;;;OAKG;IACU,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGtD"}
|
|
@@ -1,90 +1,7 @@
|
|
|
1
|
-
import { UnixTimestamp } from '@did-btcr2/common';
|
|
2
|
-
import { TxInPrevout } from '../../types.js';
|
|
3
1
|
import { BitcoinAddress } from './address.js';
|
|
4
2
|
import { BitcoinBlock } from './block.js';
|
|
5
3
|
import { BitcoinTransaction } from './transaction.js';
|
|
6
|
-
|
|
7
|
-
confirmed: boolean;
|
|
8
|
-
block_height: number;
|
|
9
|
-
block_hash: string;
|
|
10
|
-
block_time: UnixTimestamp;
|
|
11
|
-
};
|
|
12
|
-
export interface Vin {
|
|
13
|
-
txid: string;
|
|
14
|
-
vout: number;
|
|
15
|
-
prevout?: TxInPrevout;
|
|
16
|
-
scriptsig: string;
|
|
17
|
-
scriptsig_asm: string;
|
|
18
|
-
witness: string[];
|
|
19
|
-
is_coinbase: boolean;
|
|
20
|
-
sequence: number;
|
|
21
|
-
}
|
|
22
|
-
export interface Vout {
|
|
23
|
-
scriptpubkey: string;
|
|
24
|
-
scriptpubkey_asm: string;
|
|
25
|
-
scriptpubkey_type: string;
|
|
26
|
-
scriptpubkey_address?: string;
|
|
27
|
-
value: number;
|
|
28
|
-
}
|
|
29
|
-
export interface ChainStats {
|
|
30
|
-
funded_txo_count: number;
|
|
31
|
-
funded_txo_sum: number;
|
|
32
|
-
spent_txo_count: number;
|
|
33
|
-
spent_txo_sum: number;
|
|
34
|
-
tx_count: number;
|
|
35
|
-
}
|
|
36
|
-
export interface MempoolStats {
|
|
37
|
-
funded_txo_count: number;
|
|
38
|
-
funded_txo_sum: number;
|
|
39
|
-
spent_txo_count: number;
|
|
40
|
-
spent_txo_sum: number;
|
|
41
|
-
tx_count: number;
|
|
42
|
-
}
|
|
43
|
-
export interface AddressInfo {
|
|
44
|
-
address: string;
|
|
45
|
-
chain_stats: ChainStats;
|
|
46
|
-
mempool_stats: MempoolStats;
|
|
47
|
-
}
|
|
48
|
-
export interface RawTransactionRest {
|
|
49
|
-
txid: string;
|
|
50
|
-
version: number;
|
|
51
|
-
locktime: number;
|
|
52
|
-
vin: Array<Vin>;
|
|
53
|
-
vout: Array<Vout>;
|
|
54
|
-
size: number;
|
|
55
|
-
weight: number;
|
|
56
|
-
fee: number;
|
|
57
|
-
status: TransactionStatus;
|
|
58
|
-
}
|
|
59
|
-
export interface AddressUtxo {
|
|
60
|
-
txid: string;
|
|
61
|
-
vout: number;
|
|
62
|
-
status: TransactionStatus;
|
|
63
|
-
value: number;
|
|
64
|
-
}
|
|
65
|
-
export interface RestClientConfigParams {
|
|
66
|
-
host: string;
|
|
67
|
-
headers?: {
|
|
68
|
-
[key: string]: string;
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
export declare class RestClientConfig {
|
|
72
|
-
host: string;
|
|
73
|
-
headers?: {
|
|
74
|
-
[key: string]: string;
|
|
75
|
-
};
|
|
76
|
-
constructor({ host, headers }: RestClientConfigParams);
|
|
77
|
-
}
|
|
78
|
-
export interface RestApiCallParams {
|
|
79
|
-
path: string;
|
|
80
|
-
url?: string;
|
|
81
|
-
method?: string;
|
|
82
|
-
body?: any;
|
|
83
|
-
headers?: any;
|
|
84
|
-
}
|
|
85
|
-
export interface RestResponse extends Response {
|
|
86
|
-
[key: string]: any;
|
|
87
|
-
}
|
|
4
|
+
import { RestClientConfig, RestApiCallParams } from '../../types.js';
|
|
88
5
|
/**
|
|
89
6
|
* Implements a strongly-typed BitcoinRestClient to connect to remote bitcoin node via REST API.
|
|
90
7
|
* @class BitcoinRestClient
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/rest/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/rest/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAgB,MAAM,gBAAgB,CAAC;AAGnF;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAAmB;IAElC;;;OAGG;IACI,WAAW,EAAE,kBAAkB,CAAC;IAEvC;;;OAGG;IACI,KAAK,EAAE,YAAY,CAAC;IAE3B;;;OAGG;IACI,OAAO,EAAE,cAAc,CAAC;IAE/B;;;OAGG;IACI,GAAG,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAa;gBAExD,MAAM,EAAE,gBAAgB;IAQpC;;;OAGG;IACH,IAAI,MAAM,IAAI,gBAAgB,CAG7B;IAED;;;;;;;;;OASG;WACW,OAAO,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,iBAAiB;IAInE;;;;;;;;;;OAUG;YACW,IAAI;CAyCnB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Bytes } from '@did-btcr2/common';
|
|
2
|
-
import { RawTransactionRest, RestApiCallParams } from '
|
|
2
|
+
import { RawTransactionRest, RestApiCallParams } from '../../types.js';
|
|
3
3
|
export declare class BitcoinTransaction {
|
|
4
4
|
private api;
|
|
5
5
|
constructor(api: (params: RestApiCallParams) => Promise<any>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/client/rest/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/client/rest/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAA8C;gBAE7C,GAAG,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,GAAG,CAAC;IAI5D;;;;;OAKG;IACU,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI3D;;;;;OAKG;IACU,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxD;;;;;;OAMG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD;;;;;;OAMG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIjD;;;;;;OAMG;IACU,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAG/C"}
|