@did-btcr2/method 0.37.0 → 0.38.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/dist/.tsbuildinfo +1 -1
- package/dist/browser.js +89 -30
- package/dist/browser.mjs +89 -30
- package/dist/cjs/index.js +91 -29
- package/dist/esm/core/aggregation/runner/aggregation-runner.js +1 -0
- package/dist/esm/core/aggregation/runner/aggregation-runner.js.map +1 -1
- package/dist/esm/core/aggregation/runner/service-runner.js +7 -2
- package/dist/esm/core/aggregation/runner/service-runner.js.map +1 -1
- package/dist/esm/core/beacon/beacon.js +101 -10
- package/dist/esm/core/beacon/beacon.js.map +1 -1
- package/dist/esm/core/beacon/fee-estimator.js +8 -0
- package/dist/esm/core/beacon/fee-estimator.js.map +1 -1
- package/dist/types/core/aggregation/runner/aggregation-runner.d.ts +6 -0
- package/dist/types/core/aggregation/runner/aggregation-runner.d.ts.map +1 -1
- package/dist/types/core/aggregation/runner/service-runner.d.ts +19 -2
- package/dist/types/core/aggregation/runner/service-runner.d.ts.map +1 -1
- package/dist/types/core/beacon/beacon.d.ts +59 -3
- package/dist/types/core/beacon/beacon.d.ts.map +1 -1
- package/dist/types/core/beacon/fee-estimator.d.ts +8 -0
- package/dist/types/core/beacon/fee-estimator.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/core/aggregation/runner/aggregation-runner.ts +7 -0
- package/src/core/aggregation/runner/service-runner.ts +24 -2
- package/src/core/beacon/beacon.ts +131 -12
- package/src/core/beacon/fee-estimator.ts +9 -0
package/dist/cjs/index.js
CHANGED
|
@@ -55,6 +55,7 @@ __export(index_exports, {
|
|
|
55
55
|
BeaconUtils: () => BeaconUtils,
|
|
56
56
|
CASBeacon: () => CASBeacon,
|
|
57
57
|
CASBeaconError: () => CASBeaconError,
|
|
58
|
+
CHANGE_OUTPUT_VBYTES: () => CHANGE_OUTPUT_VBYTES,
|
|
58
59
|
COHORT_ADVERT: () => COHORT_ADVERT,
|
|
59
60
|
COHORT_OPT_IN: () => COHORT_OPT_IN,
|
|
60
61
|
COHORT_OPT_IN_ACCEPT: () => COHORT_OPT_IN_ACCEPT,
|
|
@@ -63,6 +64,7 @@ __export(index_exports, {
|
|
|
63
64
|
DEFAULT_ADVERT_REPEAT_INTERVAL_MS: () => DEFAULT_ADVERT_REPEAT_INTERVAL_MS,
|
|
64
65
|
DEFAULT_BROADCAST_LOOKBACK_MS: () => DEFAULT_BROADCAST_LOOKBACK_MS,
|
|
65
66
|
DEFAULT_CLOCK_SKEW_SEC: () => DEFAULT_CLOCK_SKEW_SEC,
|
|
67
|
+
DEFAULT_FEE_ESTIMATOR: () => DEFAULT_FEE_ESTIMATOR,
|
|
66
68
|
DEFAULT_FUNDING_MODEL: () => DEFAULT_FUNDING_MODEL,
|
|
67
69
|
DEFAULT_MAX_UPDATE_SIZE_BYTES: () => DEFAULT_MAX_UPDATE_SIZE_BYTES,
|
|
68
70
|
DEFAULT_NONCE_LEN_BYTES: () => DEFAULT_NONCE_LEN_BYTES,
|
|
@@ -70,6 +72,7 @@ __export(index_exports, {
|
|
|
70
72
|
DEFAULT_RECOVERY_SEQUENCE: () => DEFAULT_RECOVERY_SEQUENCE,
|
|
71
73
|
DID_REGEX: () => DID_REGEX,
|
|
72
74
|
DISTRIBUTE_AGGREGATED_DATA: () => DISTRIBUTE_AGGREGATED_DATA,
|
|
75
|
+
DUST_LIMIT_SATS: () => DUST_LIMIT_SATS2,
|
|
73
76
|
DidBtcr2: () => DidBtcr2,
|
|
74
77
|
DidCommTransport: () => DidCommTransport,
|
|
75
78
|
DidDocument: () => DidDocument,
|
|
@@ -126,6 +129,7 @@ __export(index_exports, {
|
|
|
126
129
|
TypedEventEmitter: () => TypedEventEmitter,
|
|
127
130
|
Updater: () => Updater,
|
|
128
131
|
VALIDATION_ACK: () => VALIDATION_ACK,
|
|
132
|
+
beaconTxVsize: () => beaconTxVsize,
|
|
129
133
|
buildAggregationBeaconTx: () => buildAggregationBeaconTx,
|
|
130
134
|
buildFallbackLeaf: () => buildFallbackLeaf,
|
|
131
135
|
buildFallbackSpend: () => buildFallbackSpend,
|
|
@@ -177,6 +181,7 @@ __export(index_exports, {
|
|
|
177
181
|
parseRequestAuth: () => parseRequestAuth,
|
|
178
182
|
parseSseStream: () => parseSseStream,
|
|
179
183
|
registerBeaconStrategy: () => registerBeaconStrategy,
|
|
184
|
+
resolveChangeAddress: () => resolveChangeAddress,
|
|
180
185
|
resolveFallbackThreshold: () => resolveFallbackThreshold,
|
|
181
186
|
reviveFromWire: () => reviveFromWire,
|
|
182
187
|
signEnvelope: () => signEnvelope,
|
|
@@ -4856,6 +4861,27 @@ var TypedEventEmitter = class {
|
|
|
4856
4861
|
}
|
|
4857
4862
|
};
|
|
4858
4863
|
|
|
4864
|
+
// src/core/beacon/fee-estimator.ts
|
|
4865
|
+
var StaticFeeEstimator = class {
|
|
4866
|
+
satsPerVbyte;
|
|
4867
|
+
/**
|
|
4868
|
+
* @param satsPerVbyte Fee rate in satoshis per virtual byte. Default: 5 sat/vB.
|
|
4869
|
+
*/
|
|
4870
|
+
constructor(satsPerVbyte = 5) {
|
|
4871
|
+
if (satsPerVbyte < 0 || !Number.isFinite(satsPerVbyte)) {
|
|
4872
|
+
throw new Error(`Invalid satsPerVbyte: ${satsPerVbyte}`);
|
|
4873
|
+
}
|
|
4874
|
+
this.satsPerVbyte = satsPerVbyte;
|
|
4875
|
+
}
|
|
4876
|
+
async estimateFee(vsize) {
|
|
4877
|
+
if (vsize < 0 || !Number.isFinite(vsize)) {
|
|
4878
|
+
throw new Error(`Invalid vsize: ${vsize}`);
|
|
4879
|
+
}
|
|
4880
|
+
return BigInt(Math.ceil(vsize * this.satsPerVbyte));
|
|
4881
|
+
}
|
|
4882
|
+
};
|
|
4883
|
+
var DEFAULT_FEE_ESTIMATOR = new StaticFeeEstimator(5);
|
|
4884
|
+
|
|
4859
4885
|
// src/core/aggregation/runner/service-runner.ts
|
|
4860
4886
|
var DEFAULT_ADVERT_REPEAT_INTERVAL_MS = 6e4;
|
|
4861
4887
|
var AggregationServiceRunner = class _AggregationServiceRunner extends TypedEventEmitter {
|
|
@@ -4867,6 +4893,7 @@ var AggregationServiceRunner = class _AggregationServiceRunner extends TypedEven
|
|
|
4867
4893
|
#onOptInReceived;
|
|
4868
4894
|
#onReadyToFinalize;
|
|
4869
4895
|
#onProvideTxData;
|
|
4896
|
+
#feeEstimator;
|
|
4870
4897
|
#cohortTtlMs;
|
|
4871
4898
|
#phaseTimeoutMs;
|
|
4872
4899
|
#advertRepeatIntervalMs;
|
|
@@ -4891,6 +4918,7 @@ var AggregationServiceRunner = class _AggregationServiceRunner extends TypedEven
|
|
|
4891
4918
|
finalize: acceptedCount >= minRequired
|
|
4892
4919
|
}));
|
|
4893
4920
|
this.#onProvideTxData = options.onProvideTxData;
|
|
4921
|
+
this.#feeEstimator = options.feeEstimator ?? DEFAULT_FEE_ESTIMATOR;
|
|
4894
4922
|
this.#cohortTtlMs = options.cohortTtlMs;
|
|
4895
4923
|
this.#phaseTimeoutMs = options.phaseTimeoutMs;
|
|
4896
4924
|
this.#advertRepeatIntervalMs = options.advertRepeatIntervalMs ?? DEFAULT_ADVERT_REPEAT_INTERVAL_MS;
|
|
@@ -5321,7 +5349,8 @@ var AggregationServiceRunner = class _AggregationServiceRunner extends TypedEven
|
|
|
5321
5349
|
const txData = await this.#onProvideTxData({
|
|
5322
5350
|
cohortId: ctx.cohortId,
|
|
5323
5351
|
beaconAddress: cohort.beaconAddress,
|
|
5324
|
-
signalBytes: cohort.signalBytes
|
|
5352
|
+
signalBytes: cohort.signalBytes,
|
|
5353
|
+
feeEstimator: this.#feeEstimator
|
|
5325
5354
|
});
|
|
5326
5355
|
const authMsgs = this.session.startSigning(ctx.cohortId, txData);
|
|
5327
5356
|
const sessionId = this.session.getSigningSessionId(ctx.cohortId) ?? "";
|
|
@@ -5775,6 +5804,7 @@ var AggregationRunner = class {
|
|
|
5775
5804
|
keys: options.service.keys,
|
|
5776
5805
|
config: { minParticipants: 1, network: options.config.network, beaconType: options.config.beaconType, recoveryKey, recoverySequence, fundingModel: DEFAULT_FUNDING_MODEL },
|
|
5777
5806
|
onProvideTxData: options.onProvideTxData,
|
|
5807
|
+
feeEstimator: options.feeEstimator,
|
|
5778
5808
|
cohortTtlMs: options.cohortTtlMs,
|
|
5779
5809
|
phaseTimeoutMs: options.phaseTimeoutMs,
|
|
5780
5810
|
// In-process bus with the participant already listening: a single advert
|
|
@@ -5830,28 +5860,7 @@ var SMTBeaconError = class extends import_common12.MethodError {
|
|
|
5830
5860
|
}
|
|
5831
5861
|
};
|
|
5832
5862
|
|
|
5833
|
-
// src/core/beacon/fee-estimator.ts
|
|
5834
|
-
var StaticFeeEstimator = class {
|
|
5835
|
-
satsPerVbyte;
|
|
5836
|
-
/**
|
|
5837
|
-
* @param satsPerVbyte Fee rate in satoshis per virtual byte. Default: 5 sat/vB.
|
|
5838
|
-
*/
|
|
5839
|
-
constructor(satsPerVbyte = 5) {
|
|
5840
|
-
if (satsPerVbyte < 0 || !Number.isFinite(satsPerVbyte)) {
|
|
5841
|
-
throw new Error(`Invalid satsPerVbyte: ${satsPerVbyte}`);
|
|
5842
|
-
}
|
|
5843
|
-
this.satsPerVbyte = satsPerVbyte;
|
|
5844
|
-
}
|
|
5845
|
-
async estimateFee(vsize) {
|
|
5846
|
-
if (vsize < 0 || !Number.isFinite(vsize)) {
|
|
5847
|
-
throw new Error(`Invalid vsize: ${vsize}`);
|
|
5848
|
-
}
|
|
5849
|
-
return BigInt(Math.ceil(vsize * this.satsPerVbyte));
|
|
5850
|
-
}
|
|
5851
|
-
};
|
|
5852
|
-
|
|
5853
5863
|
// src/core/beacon/beacon.ts
|
|
5854
|
-
var DEFAULT_FEE_ESTIMATOR = new StaticFeeEstimator(5);
|
|
5855
5864
|
var P2TR_BEACON_TX_VSIZE = 160;
|
|
5856
5865
|
var P2WPKH_BEACON_TX_VSIZE = 155;
|
|
5857
5866
|
var P2PKH_BEACON_TX_VSIZE = 240;
|
|
@@ -5860,6 +5869,20 @@ var SINGLETON_BEACON_TX_VSIZE = {
|
|
|
5860
5869
|
p2wpkh: P2WPKH_BEACON_TX_VSIZE,
|
|
5861
5870
|
p2tr: P2TR_BEACON_TX_VSIZE
|
|
5862
5871
|
};
|
|
5872
|
+
var CHANGE_OUTPUT_VBYTES = {
|
|
5873
|
+
p2pkh: 34,
|
|
5874
|
+
p2wpkh: 31,
|
|
5875
|
+
p2tr: 43
|
|
5876
|
+
};
|
|
5877
|
+
var DUST_LIMIT_SATS2 = {
|
|
5878
|
+
p2pkh: 546,
|
|
5879
|
+
p2wpkh: 294,
|
|
5880
|
+
p2tr: 330
|
|
5881
|
+
};
|
|
5882
|
+
function beaconTxVsize(beaconKind, changeKind) {
|
|
5883
|
+
const base2 = SINGLETON_BEACON_TX_VSIZE[beaconKind] - CHANGE_OUTPUT_VBYTES[beaconKind];
|
|
5884
|
+
return base2 + CHANGE_OUTPUT_VBYTES[changeKind];
|
|
5885
|
+
}
|
|
5863
5886
|
function detectSingletonScriptKind(bitcoinAddress, network) {
|
|
5864
5887
|
const decoded = (0, import_btc_signer7.Address)(network).decode(bitcoinAddress);
|
|
5865
5888
|
if (decoded.type === "pkh") return "p2pkh";
|
|
@@ -5876,6 +5899,26 @@ function deriveSingletonAddress(kind, pubkey, network) {
|
|
|
5876
5899
|
if (kind === "p2wpkh") return (0, import_btc_signer7.p2wpkh)(pubkey, network).address;
|
|
5877
5900
|
return (0, import_btc_signer7.p2tr)(pubkey.slice(1, 33), void 0, network).address;
|
|
5878
5901
|
}
|
|
5902
|
+
function resolveChangeAddress(beaconAddress, network, changeAddress) {
|
|
5903
|
+
if (!changeAddress || changeAddress === beaconAddress) return beaconAddress;
|
|
5904
|
+
try {
|
|
5905
|
+
(0, import_btc_signer7.Address)(network).decode(changeAddress);
|
|
5906
|
+
} catch {
|
|
5907
|
+
throw new BeaconError(
|
|
5908
|
+
`Invalid change address "${changeAddress}" for network "${network}".`,
|
|
5909
|
+
"INVALID_CHANGE_ADDRESS",
|
|
5910
|
+
{ changeAddress, network }
|
|
5911
|
+
);
|
|
5912
|
+
}
|
|
5913
|
+
return changeAddress;
|
|
5914
|
+
}
|
|
5915
|
+
function changeOutputKind(changeAddress, network) {
|
|
5916
|
+
try {
|
|
5917
|
+
return detectSingletonScriptKind(changeAddress, network);
|
|
5918
|
+
} catch {
|
|
5919
|
+
return "p2tr";
|
|
5920
|
+
}
|
|
5921
|
+
}
|
|
5879
5922
|
function opReturnScript(signalBytes) {
|
|
5880
5923
|
return import_btc_signer7.Script.encode(["RETURN", signalBytes]);
|
|
5881
5924
|
}
|
|
@@ -5902,8 +5945,10 @@ async function fetchSpendableUtxo(bitcoinAddress, bitcoin) {
|
|
|
5902
5945
|
async function buildAggregationBeaconTx(opts) {
|
|
5903
5946
|
const feeEstimator = opts.feeEstimator ?? DEFAULT_FEE_ESTIMATOR;
|
|
5904
5947
|
const { utxo, prevTxBytes } = await fetchSpendableUtxo(opts.beaconAddress, opts.bitcoin);
|
|
5948
|
+
const changeAddress = resolveChangeAddress(opts.beaconAddress, opts.network, opts.changeAddress);
|
|
5905
5949
|
const witnessScript = import_btc_signer7.OutScript.encode((0, import_btc_signer7.Address)(opts.network).decode(opts.beaconAddress));
|
|
5906
|
-
const
|
|
5950
|
+
const changeKind = changeOutputKind(changeAddress, opts.network);
|
|
5951
|
+
const feeSats = await feeEstimator.estimateFee(beaconTxVsize("p2tr", changeKind));
|
|
5907
5952
|
if (BigInt(utxo.value) <= feeSats) {
|
|
5908
5953
|
throw new BeaconError(
|
|
5909
5954
|
`UTXO value (${utxo.value}) insufficient to cover fee (${feeSats}).`,
|
|
@@ -5919,13 +5964,17 @@ async function buildAggregationBeaconTx(opts) {
|
|
|
5919
5964
|
witnessUtxo: { amount: BigInt(utxo.value), script: witnessScript },
|
|
5920
5965
|
tapInternalKey: opts.internalPubkey
|
|
5921
5966
|
});
|
|
5922
|
-
|
|
5967
|
+
const changeValue = BigInt(utxo.value) - feeSats;
|
|
5968
|
+
if (changeValue >= BigInt(DUST_LIMIT_SATS2[changeKind])) {
|
|
5969
|
+
tx.addOutputAddress(changeAddress, changeValue, opts.network);
|
|
5970
|
+
}
|
|
5923
5971
|
tx.addOutput({ script: opReturnScript(opts.signalBytes), amount: 0n });
|
|
5924
5972
|
return {
|
|
5925
5973
|
tx,
|
|
5926
5974
|
prevOutScripts: [witnessScript],
|
|
5927
5975
|
prevOutValues: [BigInt(utxo.value)],
|
|
5928
5976
|
beaconAddress: opts.beaconAddress,
|
|
5977
|
+
changeAddress,
|
|
5929
5978
|
utxo,
|
|
5930
5979
|
feeSats,
|
|
5931
5980
|
scriptKind: "p2tr"
|
|
@@ -6003,7 +6052,8 @@ var SinglePartyBeacon = class {
|
|
|
6003
6052
|
prevTxBytes,
|
|
6004
6053
|
signer,
|
|
6005
6054
|
bitcoin,
|
|
6006
|
-
feeEstimator
|
|
6055
|
+
feeEstimator,
|
|
6056
|
+
changeAddress: options?.changeAddress
|
|
6007
6057
|
});
|
|
6008
6058
|
const signedHex = await this.signSinglePartyTx(plan, signer);
|
|
6009
6059
|
return this.broadcastRawTx(bitcoin, signedHex);
|
|
@@ -6015,13 +6065,15 @@ var SinglePartyBeacon = class {
|
|
|
6015
6065
|
* the input accordingly. Validates that the signer's pubkey produces the beacon
|
|
6016
6066
|
* address under that script kind: without this check, a misconfigured caller
|
|
6017
6067
|
* would burn a real UTXO on a tx that fails at broadcast. Fees are computed from
|
|
6018
|
-
* the per-kind {@link SINGLETON_BEACON_TX_VSIZE} constant
|
|
6019
|
-
* round-trip
|
|
6068
|
+
* the per-kind {@link SINGLETON_BEACON_TX_VSIZE} constant (via {@link beaconTxVsize}),
|
|
6069
|
+
* avoiding any probe-sign round-trip; a change address of a different kind re-sizes
|
|
6070
|
+
* the fee by the change output's size delta so it stays a valid upper bound.
|
|
6020
6071
|
*/
|
|
6021
6072
|
async buildSinglePartyTx(opts) {
|
|
6022
6073
|
const network = opts.bitcoin.data;
|
|
6023
6074
|
const pubkey = opts.signer.publicKey;
|
|
6024
6075
|
const kind = detectSingletonScriptKind(opts.beaconAddress, network);
|
|
6076
|
+
const changeAddress = resolveChangeAddress(opts.beaconAddress, network, opts.changeAddress);
|
|
6025
6077
|
const derivedAddress = deriveSingletonAddress(kind, pubkey, network);
|
|
6026
6078
|
if (derivedAddress !== opts.beaconAddress) {
|
|
6027
6079
|
throw new BeaconError(
|
|
@@ -6030,7 +6082,8 @@ var SinglePartyBeacon = class {
|
|
|
6030
6082
|
{ kind, address: opts.beaconAddress, derivedAddress }
|
|
6031
6083
|
);
|
|
6032
6084
|
}
|
|
6033
|
-
const
|
|
6085
|
+
const changeKind = changeOutputKind(changeAddress, network);
|
|
6086
|
+
const feeSats = await opts.feeEstimator.estimateFee(beaconTxVsize(kind, changeKind));
|
|
6034
6087
|
const amount = BigInt(opts.utxo.value);
|
|
6035
6088
|
if (amount <= feeSats) {
|
|
6036
6089
|
throw new BeaconError(
|
|
@@ -6067,13 +6120,17 @@ var SinglePartyBeacon = class {
|
|
|
6067
6120
|
tapInternalKey: internalKey
|
|
6068
6121
|
});
|
|
6069
6122
|
}
|
|
6070
|
-
|
|
6123
|
+
const changeValue = amount - feeSats;
|
|
6124
|
+
if (changeValue >= BigInt(DUST_LIMIT_SATS2[changeKind])) {
|
|
6125
|
+
tx.addOutputAddress(changeAddress, changeValue, network);
|
|
6126
|
+
}
|
|
6071
6127
|
tx.addOutput({ script: opReturnScript(opts.signalBytes), amount: 0n });
|
|
6072
6128
|
return {
|
|
6073
6129
|
tx,
|
|
6074
6130
|
prevOutScripts: [prevOutScript],
|
|
6075
6131
|
prevOutValues: [amount],
|
|
6076
6132
|
beaconAddress: opts.beaconAddress,
|
|
6133
|
+
changeAddress,
|
|
6077
6134
|
utxo: opts.utxo,
|
|
6078
6135
|
feeSats,
|
|
6079
6136
|
scriptKind: kind
|
|
@@ -8983,6 +9040,7 @@ var DidDocumentBuilder = class {
|
|
|
8983
9040
|
BeaconUtils,
|
|
8984
9041
|
CASBeacon,
|
|
8985
9042
|
CASBeaconError,
|
|
9043
|
+
CHANGE_OUTPUT_VBYTES,
|
|
8986
9044
|
COHORT_ADVERT,
|
|
8987
9045
|
COHORT_OPT_IN,
|
|
8988
9046
|
COHORT_OPT_IN_ACCEPT,
|
|
@@ -8991,6 +9049,7 @@ var DidDocumentBuilder = class {
|
|
|
8991
9049
|
DEFAULT_ADVERT_REPEAT_INTERVAL_MS,
|
|
8992
9050
|
DEFAULT_BROADCAST_LOOKBACK_MS,
|
|
8993
9051
|
DEFAULT_CLOCK_SKEW_SEC,
|
|
9052
|
+
DEFAULT_FEE_ESTIMATOR,
|
|
8994
9053
|
DEFAULT_FUNDING_MODEL,
|
|
8995
9054
|
DEFAULT_MAX_UPDATE_SIZE_BYTES,
|
|
8996
9055
|
DEFAULT_NONCE_LEN_BYTES,
|
|
@@ -8998,6 +9057,7 @@ var DidDocumentBuilder = class {
|
|
|
8998
9057
|
DEFAULT_RECOVERY_SEQUENCE,
|
|
8999
9058
|
DID_REGEX,
|
|
9000
9059
|
DISTRIBUTE_AGGREGATED_DATA,
|
|
9060
|
+
DUST_LIMIT_SATS,
|
|
9001
9061
|
DidBtcr2,
|
|
9002
9062
|
DidCommTransport,
|
|
9003
9063
|
DidDocument,
|
|
@@ -9054,6 +9114,7 @@ var DidDocumentBuilder = class {
|
|
|
9054
9114
|
TypedEventEmitter,
|
|
9055
9115
|
Updater,
|
|
9056
9116
|
VALIDATION_ACK,
|
|
9117
|
+
beaconTxVsize,
|
|
9057
9118
|
buildAggregationBeaconTx,
|
|
9058
9119
|
buildFallbackLeaf,
|
|
9059
9120
|
buildFallbackSpend,
|
|
@@ -9105,6 +9166,7 @@ var DidDocumentBuilder = class {
|
|
|
9105
9166
|
parseRequestAuth,
|
|
9106
9167
|
parseSseStream,
|
|
9107
9168
|
registerBeaconStrategy,
|
|
9169
|
+
resolveChangeAddress,
|
|
9108
9170
|
resolveFallbackThreshold,
|
|
9109
9171
|
reviveFromWire,
|
|
9110
9172
|
signEnvelope,
|
|
@@ -48,6 +48,7 @@ export class AggregationRunner {
|
|
|
48
48
|
keys: options.service.keys,
|
|
49
49
|
config: { minParticipants: 1, network: options.config.network, beaconType: options.config.beaconType, recoveryKey, recoverySequence, fundingModel: DEFAULT_FUNDING_MODEL },
|
|
50
50
|
onProvideTxData: options.onProvideTxData,
|
|
51
|
+
feeEstimator: options.feeEstimator,
|
|
51
52
|
cohortTtlMs: options.cohortTtlMs,
|
|
52
53
|
phaseTimeoutMs: options.phaseTimeoutMs,
|
|
53
54
|
// In-process bus with the participant already listening: a single advert
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregation-runner.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/runner/aggregation-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEzF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregation-runner.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/runner/aggregation-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { AggregationServiceError } from '../errors.js';
|
|
|
3
3
|
import { COHORT_OPT_IN, FALLBACK_SIGNATURE, NONCE_CONTRIBUTION, SIGNATURE_AUTHORIZATION, SUBMIT_NONINCLUDED, SUBMIT_UPDATE, VALIDATION_ACK, } from '../messages/constants.js';
|
|
4
4
|
import { ServiceCohortPhase } from '../phases.js';
|
|
5
5
|
import { AggregationService } from '../service.js';
|
|
6
|
+
import { DEFAULT_FEE_ESTIMATOR } from '../../beacon/fee-estimator.js';
|
|
6
7
|
import { TypedEventEmitter } from './typed-emitter.js';
|
|
7
8
|
/** Default cadence for re-publishing COHORT_ADVERT until keygen completes: 60 seconds. */
|
|
8
9
|
export const DEFAULT_ADVERT_REPEAT_INTERVAL_MS = 60_000;
|
|
@@ -30,8 +31,9 @@ export const DEFAULT_ADVERT_REPEAT_INTERVAL_MS = 60_000;
|
|
|
30
31
|
* transport,
|
|
31
32
|
* did: serviceDid,
|
|
32
33
|
* keys: serviceKeys,
|
|
33
|
-
* onProvideTxData: async ({
|
|
34
|
-
*
|
|
34
|
+
* onProvideTxData: async ({ beaconAddress, signalBytes, feeEstimator }) => {
|
|
35
|
+
* // Forward feeEstimator so a dynamic rate injected at the runner is honored.
|
|
36
|
+
* return await buildBeaconTransaction(beaconAddress, signalBytes, bitcoin, feeEstimator);
|
|
35
37
|
* },
|
|
36
38
|
* });
|
|
37
39
|
*
|
|
@@ -62,6 +64,7 @@ export class AggregationServiceRunner extends TypedEventEmitter {
|
|
|
62
64
|
#onOptInReceived;
|
|
63
65
|
#onReadyToFinalize;
|
|
64
66
|
#onProvideTxData;
|
|
67
|
+
#feeEstimator;
|
|
65
68
|
#cohortTtlMs;
|
|
66
69
|
#phaseTimeoutMs;
|
|
67
70
|
#advertRepeatIntervalMs;
|
|
@@ -86,6 +89,7 @@ export class AggregationServiceRunner extends TypedEventEmitter {
|
|
|
86
89
|
finalize: acceptedCount >= minRequired,
|
|
87
90
|
}));
|
|
88
91
|
this.#onProvideTxData = options.onProvideTxData;
|
|
92
|
+
this.#feeEstimator = options.feeEstimator ?? DEFAULT_FEE_ESTIMATOR;
|
|
89
93
|
this.#cohortTtlMs = options.cohortTtlMs;
|
|
90
94
|
this.#phaseTimeoutMs = options.phaseTimeoutMs;
|
|
91
95
|
this.#advertRepeatIntervalMs = options.advertRepeatIntervalMs ?? DEFAULT_ADVERT_REPEAT_INTERVAL_MS;
|
|
@@ -583,6 +587,7 @@ export class AggregationServiceRunner extends TypedEventEmitter {
|
|
|
583
587
|
cohortId: ctx.cohortId,
|
|
584
588
|
beaconAddress: cohort.beaconAddress,
|
|
585
589
|
signalBytes: cohort.signalBytes,
|
|
590
|
+
feeEstimator: this.#feeEstimator,
|
|
586
591
|
});
|
|
587
592
|
const authMsgs = this.session.startSigning(ctx.cohortId, txData);
|
|
588
593
|
const sessionId = this.session.getSigningSessionId(ctx.cohortId) ?? '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-runner.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/runner/service-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service-runner.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/runner/service-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { concatBytes, hexToBytes } from '@noble/hashes/utils.js';
|
|
2
2
|
import { Address, OutScript, p2pkh, p2tr, p2wpkh, Script, SigHash, Transaction } from '@scure/btc-signer';
|
|
3
3
|
import { BeaconError } from './error.js';
|
|
4
|
-
import {
|
|
5
|
-
/** Default fee estimator used when none is supplied. ~5 sat/vB static rate. */
|
|
6
|
-
const DEFAULT_FEE_ESTIMATOR = new StaticFeeEstimator(5);
|
|
4
|
+
import { DEFAULT_FEE_ESTIMATOR } from './fee-estimator.js';
|
|
7
5
|
/**
|
|
8
6
|
* Conservative vsize estimate for a 1-input P2TR key-path to 1 P2TR change + 1 OP_RETURN(32) tx.
|
|
9
7
|
* Stripped 137 + witness ≈ 68 (marker + flag + stack-count + sig-len + 64 BIP-340 sig).
|
|
@@ -29,6 +27,48 @@ export const SINGLETON_BEACON_TX_VSIZE = {
|
|
|
29
27
|
p2wpkh: P2WPKH_BEACON_TX_VSIZE,
|
|
30
28
|
p2tr: P2TR_BEACON_TX_VSIZE,
|
|
31
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Serialized size (vbytes) of a single change output, by script kind:
|
|
32
|
+
* 8 (value) + 1 (scriptPubKey length) + scriptPubKey bytes. P2PKH 25, P2WPKH 22,
|
|
33
|
+
* P2TR 34. These are non-witness bytes, so each contributes its full byte count to
|
|
34
|
+
* the transaction vsize. The {@link SINGLETON_BEACON_TX_VSIZE} constants bake in a
|
|
35
|
+
* same-kind change output; {@link beaconTxVsize} uses these deltas to re-size the
|
|
36
|
+
* fee when a caller routes change to an address of a different kind (ADR 044).
|
|
37
|
+
*/
|
|
38
|
+
export const CHANGE_OUTPUT_VBYTES = {
|
|
39
|
+
p2pkh: 34,
|
|
40
|
+
p2wpkh: 31,
|
|
41
|
+
p2tr: 43,
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Dust threshold (sats) below which a change output is not worth creating, by script
|
|
45
|
+
* kind (the standard Bitcoin Core dust relay thresholds at the default 3 sat/vB dust
|
|
46
|
+
* rate). When the change after fees falls below this, the builders omit the change
|
|
47
|
+
* output and let the remainder fall into the fee rather than emit an unspendable,
|
|
48
|
+
* relay-rejected dust output (ADR 044).
|
|
49
|
+
*/
|
|
50
|
+
export const DUST_LIMIT_SATS = {
|
|
51
|
+
p2pkh: 546,
|
|
52
|
+
p2wpkh: 294,
|
|
53
|
+
p2tr: 330,
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* vsize (vbytes) for a beacon transaction that spends one input of `beaconKind`
|
|
57
|
+
* and returns change to an output of `changeKind`, plus the OP_RETURN(32) signal.
|
|
58
|
+
*
|
|
59
|
+
* When `changeKind === beaconKind` (the default, change to the beacon address) this
|
|
60
|
+
* returns the per-kind {@link SINGLETON_BEACON_TX_VSIZE} constant unchanged, so the
|
|
61
|
+
* default path and the constants' lock-in tests are byte-identical. A differing
|
|
62
|
+
* `changeKind` swaps the assumed same-kind change output for the actual one, keeping
|
|
63
|
+
* the result a valid upper bound. The aggregation key-path spend is the
|
|
64
|
+
* `beaconKind: 'p2tr'` case (its input is always the cohort's P2TR key path; only the
|
|
65
|
+
* change output varies), the analytical sizing ADR 045 calls for, computed without a
|
|
66
|
+
* secret.
|
|
67
|
+
*/
|
|
68
|
+
export function beaconTxVsize(beaconKind, changeKind) {
|
|
69
|
+
const base = SINGLETON_BEACON_TX_VSIZE[beaconKind] - CHANGE_OUTPUT_VBYTES[beaconKind];
|
|
70
|
+
return base + CHANGE_OUTPUT_VBYTES[changeKind];
|
|
71
|
+
}
|
|
32
72
|
/**
|
|
33
73
|
* Detect the singleton script kind of a Bitcoin address (P2PKH / P2WPKH / P2TR).
|
|
34
74
|
* The deterministic-DID document emits all three kinds; the broadcast path needs
|
|
@@ -58,6 +98,37 @@ export function deriveSingletonAddress(kind, pubkey, network) {
|
|
|
58
98
|
// P2TR key-path: x-only internal key (drop the SEC prefix byte).
|
|
59
99
|
return p2tr(pubkey.slice(1, 33), undefined, network).address;
|
|
60
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Resolve the change-output recipient for a beacon transaction. Returns the beacon
|
|
103
|
+
* address when no change address is supplied (preserving the prior behavior of
|
|
104
|
+
* returning change to the spent address), otherwise validates the caller-supplied
|
|
105
|
+
* address against the network and returns it. Validating here fails fast rather than
|
|
106
|
+
* burning a real UTXO on a transaction that breaks at broadcast (ADR 044).
|
|
107
|
+
*/
|
|
108
|
+
export function resolveChangeAddress(beaconAddress, network, changeAddress) {
|
|
109
|
+
if (!changeAddress || changeAddress === beaconAddress)
|
|
110
|
+
return beaconAddress;
|
|
111
|
+
try {
|
|
112
|
+
Address(network).decode(changeAddress);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
throw new BeaconError(`Invalid change address "${changeAddress}" for network "${network}".`, 'INVALID_CHANGE_ADDRESS', { changeAddress, network });
|
|
116
|
+
}
|
|
117
|
+
return changeAddress;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Detect the change output's script kind for fee sizing. A change address that is not
|
|
121
|
+
* one of the three singleton kinds (for example P2SH or P2WSH) is sized as P2TR, the
|
|
122
|
+
* largest standard change output, so the estimated fee stays a valid upper bound.
|
|
123
|
+
*/
|
|
124
|
+
function changeOutputKind(changeAddress, network) {
|
|
125
|
+
try {
|
|
126
|
+
return detectSingletonScriptKind(changeAddress, network);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return 'p2tr';
|
|
130
|
+
}
|
|
131
|
+
}
|
|
61
132
|
/**
|
|
62
133
|
* Build an OP_RETURN script carrying a 32-byte beacon signal.
|
|
63
134
|
* Exported as a utility so callers building txs outside SinglePartyBeacon (e.g., the aggregation
|
|
@@ -105,6 +176,7 @@ async function fetchSpendableUtxo(bitcoinAddress, bitcoin) {
|
|
|
105
176
|
export async function buildAggregationBeaconTx(opts) {
|
|
106
177
|
const feeEstimator = opts.feeEstimator ?? DEFAULT_FEE_ESTIMATOR;
|
|
107
178
|
const { utxo, prevTxBytes } = await fetchSpendableUtxo(opts.beaconAddress, opts.bitcoin);
|
|
179
|
+
const changeAddress = resolveChangeAddress(opts.beaconAddress, opts.network, opts.changeAddress);
|
|
108
180
|
// The funded beacon output is a Taproot script-tree output: key path is the
|
|
109
181
|
// MuSig2 aggregate, script path is the k-of-n fallback + CSV recovery leaves
|
|
110
182
|
// (see cohort.ts and ADR 042). Derive the witnessUtxo scriptPubKey from the
|
|
@@ -112,8 +184,11 @@ export async function buildAggregationBeaconTx(opts) {
|
|
|
112
184
|
// would not match the script-tree UTXO on chain and would invalidate both the
|
|
113
185
|
// key-path sighash and the fallback script-path sighash.
|
|
114
186
|
const witnessScript = OutScript.encode(Address(opts.network).decode(opts.beaconAddress));
|
|
115
|
-
//
|
|
116
|
-
|
|
187
|
+
// The fee cannot be probe-measured (no secret key until the downstream MuSig2
|
|
188
|
+
// round), so size it analytically. The input is the cohort's P2TR key path; only
|
|
189
|
+
// the change output's kind varies, so the vsize follows the change address (ADR 045).
|
|
190
|
+
const changeKind = changeOutputKind(changeAddress, opts.network);
|
|
191
|
+
const feeSats = await feeEstimator.estimateFee(beaconTxVsize('p2tr', changeKind));
|
|
117
192
|
if (BigInt(utxo.value) <= feeSats) {
|
|
118
193
|
throw new BeaconError(`UTXO value (${utxo.value}) insufficient to cover fee (${feeSats}).`, 'INSUFFICIENT_FUNDS', { address: opts.beaconAddress, valueSats: utxo.value, feeSats });
|
|
119
194
|
}
|
|
@@ -128,13 +203,19 @@ export async function buildAggregationBeaconTx(opts) {
|
|
|
128
203
|
witnessUtxo: { amount: BigInt(utxo.value), script: witnessScript },
|
|
129
204
|
tapInternalKey: opts.internalPubkey,
|
|
130
205
|
});
|
|
131
|
-
|
|
206
|
+
// Change first (omitted when it would be dust, sweeping the remainder into the
|
|
207
|
+
// fee), then the OP_RETURN signal, which the spec requires to be the last output.
|
|
208
|
+
const changeValue = BigInt(utxo.value) - feeSats;
|
|
209
|
+
if (changeValue >= BigInt(DUST_LIMIT_SATS[changeKind])) {
|
|
210
|
+
tx.addOutputAddress(changeAddress, changeValue, opts.network);
|
|
211
|
+
}
|
|
132
212
|
tx.addOutput({ script: opReturnScript(opts.signalBytes), amount: 0n });
|
|
133
213
|
return {
|
|
134
214
|
tx,
|
|
135
215
|
prevOutScripts: [witnessScript],
|
|
136
216
|
prevOutValues: [BigInt(utxo.value)],
|
|
137
217
|
beaconAddress: opts.beaconAddress,
|
|
218
|
+
changeAddress,
|
|
138
219
|
utxo,
|
|
139
220
|
feeSats,
|
|
140
221
|
scriptKind: 'p2tr',
|
|
@@ -252,6 +333,7 @@ export class SinglePartyBeacon {
|
|
|
252
333
|
const { utxo, prevTxBytes } = await fetchSpendableUtxo(beaconAddress, bitcoin);
|
|
253
334
|
const plan = await this.buildSinglePartyTx({
|
|
254
335
|
signalBytes, beaconAddress, utxo, prevTxBytes, signer, bitcoin, feeEstimator,
|
|
336
|
+
changeAddress: options?.changeAddress,
|
|
255
337
|
});
|
|
256
338
|
const signedHex = await this.signSinglePartyTx(plan, signer);
|
|
257
339
|
return this.broadcastRawTx(bitcoin, signedHex);
|
|
@@ -263,18 +345,21 @@ export class SinglePartyBeacon {
|
|
|
263
345
|
* the input accordingly. Validates that the signer's pubkey produces the beacon
|
|
264
346
|
* address under that script kind: without this check, a misconfigured caller
|
|
265
347
|
* would burn a real UTXO on a tx that fails at broadcast. Fees are computed from
|
|
266
|
-
* the per-kind {@link SINGLETON_BEACON_TX_VSIZE} constant
|
|
267
|
-
* round-trip
|
|
348
|
+
* the per-kind {@link SINGLETON_BEACON_TX_VSIZE} constant (via {@link beaconTxVsize}),
|
|
349
|
+
* avoiding any probe-sign round-trip; a change address of a different kind re-sizes
|
|
350
|
+
* the fee by the change output's size delta so it stays a valid upper bound.
|
|
268
351
|
*/
|
|
269
352
|
async buildSinglePartyTx(opts) {
|
|
270
353
|
const network = opts.bitcoin.data;
|
|
271
354
|
const pubkey = opts.signer.publicKey;
|
|
272
355
|
const kind = detectSingletonScriptKind(opts.beaconAddress, network);
|
|
356
|
+
const changeAddress = resolveChangeAddress(opts.beaconAddress, network, opts.changeAddress);
|
|
273
357
|
const derivedAddress = deriveSingletonAddress(kind, pubkey, network);
|
|
274
358
|
if (derivedAddress !== opts.beaconAddress) {
|
|
275
359
|
throw new BeaconError(`Signer pubkey produces ${kind.toUpperCase()} address "${derivedAddress}", but beacon address is "${opts.beaconAddress}".`, 'SIGNER_KEY_MISMATCH', { kind, address: opts.beaconAddress, derivedAddress });
|
|
276
360
|
}
|
|
277
|
-
const
|
|
361
|
+
const changeKind = changeOutputKind(changeAddress, network);
|
|
362
|
+
const feeSats = await opts.feeEstimator.estimateFee(beaconTxVsize(kind, changeKind));
|
|
278
363
|
const amount = BigInt(opts.utxo.value);
|
|
279
364
|
if (amount <= feeSats) {
|
|
280
365
|
throw new BeaconError(`UTXO value (${opts.utxo.value}) insufficient to cover fee (${feeSats}).`, 'INSUFFICIENT_FUNDS', { address: opts.beaconAddress, valueSats: opts.utxo.value, feeSats });
|
|
@@ -315,13 +400,19 @@ export class SinglePartyBeacon {
|
|
|
315
400
|
tapInternalKey: internalKey,
|
|
316
401
|
});
|
|
317
402
|
}
|
|
318
|
-
|
|
403
|
+
// Change first (omitted when it would be dust, sweeping the remainder into the
|
|
404
|
+
// fee), then the OP_RETURN signal, which the spec requires to be the last output.
|
|
405
|
+
const changeValue = amount - feeSats;
|
|
406
|
+
if (changeValue >= BigInt(DUST_LIMIT_SATS[changeKind])) {
|
|
407
|
+
tx.addOutputAddress(changeAddress, changeValue, network);
|
|
408
|
+
}
|
|
319
409
|
tx.addOutput({ script: opReturnScript(opts.signalBytes), amount: 0n });
|
|
320
410
|
return {
|
|
321
411
|
tx,
|
|
322
412
|
prevOutScripts: [prevOutScript],
|
|
323
413
|
prevOutValues: [amount],
|
|
324
414
|
beaconAddress: opts.beaconAddress,
|
|
415
|
+
changeAddress,
|
|
325
416
|
utxo: opts.utxo,
|
|
326
417
|
feeSats,
|
|
327
418
|
scriptKind: kind,
|