@bsv/wallet-toolbox-mobile 2.4.0 → 2.4.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/out/src/Wallet.d.ts +5 -1
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +14 -8
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +18 -0
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +56 -9
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +46 -18
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +10 -10
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js +7 -2
- package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +2 -57
- package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +1 -0
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +10 -4
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.d.ts +10 -1
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +16 -2
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +39 -19
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +8 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +4 -0
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +2 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +2 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +1 -0
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +17 -3
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/networkConfig.d.ts +29 -0
- package/out/src/services/networkConfig.d.ts.map +1 -0
- package/out/src/services/networkConfig.js +54 -0
- package/out/src/services/networkConfig.js.map +1 -0
- package/out/src/services/providers/Arcade.d.ts +1 -0
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +45 -14
- package/out/src/services/providers/Arcade.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js +12 -4
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +3 -1
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.js +5 -3
- package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +12 -5
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts +6 -4
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +12 -7
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/resultBeef.d.ts +4 -0
- package/out/src/signer/methods/resultBeef.d.ts.map +1 -0
- package/out/src/signer/methods/resultBeef.js +12 -0
- package/out/src/signer/methods/resultBeef.js.map +1 -0
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +6 -1
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +17 -0
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +206 -13
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts +2 -0
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +13 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +23 -10
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +47 -24
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +6 -4
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +26 -15
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/managedChange.d.ts +26 -0
- package/out/src/storage/methods/managedChange.d.ts.map +1 -0
- package/out/src/storage/methods/managedChange.js +43 -0
- package/out/src/storage/methods/managedChange.js.map +1 -0
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +5 -4
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/remoting/BinaryJson.d.ts +10 -0
- package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -0
- package/out/src/storage/remoting/BinaryJson.js +172 -0
- package/out/src/storage/remoting/BinaryJson.js.map +1 -0
- package/out/src/storage/remoting/StorageClient.d.ts +2 -2
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +14 -5
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +11 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +4 -1
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts +2 -2
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +14 -5
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/schema/tables/TableAuthSession.d.ts +20 -0
- package/out/src/storage/schema/tables/TableAuthSession.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableAuthSession.js +15 -0
- package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -0
- package/out/src/storage/schema/tables/index.d.ts +1 -0
- package/out/src/storage/schema/tables/index.d.ts.map +1 -1
- package/out/src/storage/schema/tables/index.js +1 -0
- package/out/src/storage/schema/tables/index.js.map +1 -1
- package/out/src/storage/storageProviderHelpers.d.ts +5 -4
- package/out/src/storage/storageProviderHelpers.d.ts.map +1 -1
- package/out/src/storage/storageProviderHelpers.js +7 -6
- package/out/src/storage/storageProviderHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +2 -0
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/package.json +2 -2
|
@@ -6,6 +6,7 @@ const sdk_1 = require("@bsv/sdk");
|
|
|
6
6
|
const buildSignableTransaction_1 = require("./buildSignableTransaction");
|
|
7
7
|
const completeSignedTransaction_1 = require("./completeSignedTransaction");
|
|
8
8
|
const WERR_errors_1 = require("../../sdk/WERR_errors");
|
|
9
|
+
const resultBeef_1 = require("./resultBeef");
|
|
9
10
|
async function createAction(wallet, auth, vargs) {
|
|
10
11
|
const r = {};
|
|
11
12
|
const logger = vargs.logger;
|
|
@@ -22,13 +23,19 @@ async function createAction(wallet, auth, vargs) {
|
|
|
22
23
|
logger?.log('completed signed transaction');
|
|
23
24
|
r.txid = prior.tx.id('hex');
|
|
24
25
|
const beef = new sdk_1.Beef();
|
|
25
|
-
if (prior.dcr.inputBeef != null)
|
|
26
|
-
|
|
26
|
+
if (prior.dcr.inputBeef != null) {
|
|
27
|
+
const inputBeef = prior.dcr.inputBeef instanceof Uint8Array
|
|
28
|
+
? sdk_1.Beef.fromBinaryView(prior.dcr.inputBeef)
|
|
29
|
+
: sdk_1.Beef.fromBinary(prior.dcr.inputBeef);
|
|
30
|
+
beef.mergeBeef(inputBeef);
|
|
31
|
+
}
|
|
27
32
|
beef.mergeTransaction(prior.tx);
|
|
28
33
|
logger?.log('merged beef');
|
|
29
34
|
(0, completeSignedTransaction_1.verifyUnlockScripts)(r.txid, beef);
|
|
30
35
|
logger?.log('verified unlock scripts');
|
|
31
36
|
r.noSendChange = prior.dcr.noSendChangeOutputVouts?.map(vout => `${r.txid}.${vout}`);
|
|
37
|
+
beef.atomicTxid = r.txid;
|
|
38
|
+
(0, resultBeef_1.setResultBeef)(r, beef);
|
|
32
39
|
if (!vargs.options.returnTXIDOnly)
|
|
33
40
|
r.tx = beef.toBinaryAtomic(r.txid);
|
|
34
41
|
}
|
|
@@ -70,9 +77,9 @@ function makeSignableTransactionBeef(tx, inputBEEF) {
|
|
|
70
77
|
if (input.sourceTransaction == null) {
|
|
71
78
|
throw new WERR_errors_1.WERR_INTERNAL('Every signableTransaction input must have a sourceTransaction');
|
|
72
79
|
}
|
|
73
|
-
beef.mergeRawTx(input.sourceTransaction.
|
|
80
|
+
beef.mergeRawTx(input.sourceTransaction.toUint8Array());
|
|
74
81
|
}
|
|
75
|
-
beef.mergeRawTx(tx.
|
|
82
|
+
beef.mergeRawTx(tx.toUint8Array());
|
|
76
83
|
return beef.toBinaryAtomic(tx.id('hex'));
|
|
77
84
|
}
|
|
78
85
|
function removeUnlockScripts(args) {
|
|
@@ -99,7 +106,7 @@ async function processAction(prior, wallet, auth, vargs) {
|
|
|
99
106
|
isDelayed: vargs.isDelayed,
|
|
100
107
|
reference: (prior != null) ? prior.reference : undefined,
|
|
101
108
|
txid: (prior != null) ? prior.tx.id('hex') : undefined,
|
|
102
|
-
rawTx: (prior != null) ? prior.tx.
|
|
109
|
+
rawTx: (prior != null) ? prior.tx.toUint8Array() : undefined,
|
|
103
110
|
sendWith: vargs.isSendWith ? vargs.options.sendWith : [],
|
|
104
111
|
logger: vargs.logger
|
|
105
112
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAction.js","sourceRoot":"","sources":["../../../../../src/signer/methods/createAction.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"createAction.js","sourceRoot":"","sources":["../../../../../src/signer/methods/createAction.ts"],"names":[],"mappings":";;AAiCA,oCAkDC;AAoED,sCAoBC;AA3KD,kCAWiB;AACjB,yEAAqE;AAOrE,2EAA4F;AAE5F,uDAAqD;AACrD,6CAA4C;AAWrC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,IAAY,EACZ,KAAuC;IAEvC,MAAM,CAAC,GAAwB,EAAE,CAAA;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAE3B,IAAI,KAAoC,CAAA;IAExC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;QACnD,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACxC,MAAM,EAAE,GAAG,CAAC,yBAAyB,CAAC,CAAA;QAEtC,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YAC7D,MAAM,EAAE,GAAG,CAAC,qCAAqC,CAAC,CAAA;YAClD,OAAO,CAAC,CAAA;QACV,CAAC;QAED,KAAK,CAAC,EAAE,GAAG,MAAM,IAAA,qDAAyB,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;QAC7D,MAAM,EAAE,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAE3C,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,UAAI,EAAE,CAAA;QACvB,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,YAAY,UAAU;gBACzD,CAAC,CAAC,UAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC1C,CAAC,CAAC,UAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACxC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAA;QAE1B,IAAA,+CAAmB,EAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACjC,MAAM,EAAE,GAAG,CAAC,yBAAyB,CAAC,CAAA;QAEtC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;QACpF,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAA;QACxB,IAAA,0BAAa,EAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc;YAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9F,MAAM,EAAE,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAEpC,CAAC,CAAC,eAAe,GAAG,eAAe,CAAA;IACnC,CAAC,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;IAEvC,OAAO,CAAC,CAAA;AACV,CAAC;AAED,KAAK,UAAU,WAAW,CAAE,MAAc,EAAE,KAAuC;IACjF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;IAE1D,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;IAE/B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,mDAAwB,EAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACxE,MAAM,EAAE,GAAG,CAAC,4BAA4B,CAAC,CAAA;IAEzC,MAAM,KAAK,GAAsB,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAA;IAEjF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,6BAA6B,CACpC,KAAwB,EACxB,MAAc,EACd,IAAsC;IAEtC,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI;QAAE,MAAM,IAAI,2BAAa,CAAC,mCAAmC,CAAC,CAAA;IAE7F,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAE/B,MAAM,CAAC,GAAuB;QAC5B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3G,mBAAmB,EAAE;YACnB,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS;YAC9B,EAAE,EAAE,2BAA2B,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;SAC/D;KACF,CAAA;IAED,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAoB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAA;IAEnE,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,2BAA2B,CAAE,EAAe,EAAE,SAAgC;IACrF,uDAAuD;IACvD,6FAA6F;IAC7F,MAAM,IAAI,GAAG,IAAI,UAAI,EAAE,CAAA;IACvB,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC;YAAC,MAAM,IAAI,2BAAa,CAAC,+DAA+D,CAAC,CAAA;QAAC,CAAC;QACjI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA;IAClC,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,mBAAmB,CAAE,IAAsC;IAClE,IAAI,WAAW,GAAG,IAAI,CAAA;IACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,SAAS,CAAC,EAAE,CAAC;QACpE,8EAA8E;QAC9E,WAAW,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;QACrC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,EAAE,GAAsC;gBAC5C,GAAG,CAAC;gBACJ,qBAAqB,EAAE,CAAC,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB;aAC5G,CAAA;YACD,OAAO,EAAE,CAAC,eAAe,CAAA;YACzB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,KAAoC,EACpC,MAAc,EACd,IAAY,EACZ,KAAwC;IAExC,MAAM,IAAI,GAA6B;QACrC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACxD,IAAI,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QACtD,KAAK,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;QAC5D,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QACxD,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAA;IACD,MAAM,CAAC,GAAgC,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAE/E,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,qCAAqC,CAAE,IAAY,EAAE,QAAgB;IAC5E,MAAM,EAAE,GAAG,IAAI,iBAAW,EAAE,CAAA;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAAE,EAAE,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,YAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;IACzF,EAAE,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,YAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IACvD,OAAO,EAAE,CAAA;AACX,CAAC"}
|
|
@@ -29,12 +29,14 @@ import { AuthId, StorageInternalizeActionResult } from '../../sdk/WalletStorage.
|
|
|
29
29
|
*
|
|
30
30
|
* "basket insertion" Merge Rules:
|
|
31
31
|
* 1. The "default" basket may not be specified as the insertion basket.
|
|
32
|
-
* 2.
|
|
33
|
-
* 3.
|
|
32
|
+
* 2. Managed change may not be reclassified as a basket insertion.
|
|
33
|
+
* 3. Basket insertions do not affect wallet balance and are typed "custom".
|
|
34
34
|
*
|
|
35
35
|
* "wallet payment" Merge Rules:
|
|
36
|
-
* 1.
|
|
37
|
-
* 2.
|
|
36
|
+
* 1. Targeting an existing managed output is idempotent.
|
|
37
|
+
* 2. Targeting a custom output converts it to managed BRC-29 change after
|
|
38
|
+
* the locking script is verified. This is the only supported in-place
|
|
39
|
+
* recovery path for a misclassified BRC-29 payment.
|
|
38
40
|
*
|
|
39
41
|
*/
|
|
40
42
|
export declare function internalizeAction(wallet: Wallet, auth: AuthId, args: InternalizeActionArgs): Promise<StorageInternalizeActionResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalizeAction.d.ts","sourceRoot":"","sources":["../../../../../src/signer/methods/internalizeAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,qBAAqB,EAAwD,MAAM,UAAU,CAAA;AAC5G,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAA;AAG3F
|
|
1
|
+
{"version":3,"file":"internalizeAction.d.ts","sourceRoot":"","sources":["../../../../../src/signer/methods/internalizeAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,qBAAqB,EAAwD,MAAM,UAAU,CAAA;AAC5G,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAA;AAG3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,8BAA8B,CAAC,CAqEzC"}
|
|
@@ -31,12 +31,14 @@ const WERR_errors_1 = require("../../sdk/WERR_errors");
|
|
|
31
31
|
*
|
|
32
32
|
* "basket insertion" Merge Rules:
|
|
33
33
|
* 1. The "default" basket may not be specified as the insertion basket.
|
|
34
|
-
* 2.
|
|
35
|
-
* 3.
|
|
34
|
+
* 2. Managed change may not be reclassified as a basket insertion.
|
|
35
|
+
* 3. Basket insertions do not affect wallet balance and are typed "custom".
|
|
36
36
|
*
|
|
37
37
|
* "wallet payment" Merge Rules:
|
|
38
|
-
* 1.
|
|
39
|
-
* 2.
|
|
38
|
+
* 1. Targeting an existing managed output is idempotent.
|
|
39
|
+
* 2. Targeting a custom output converts it to managed BRC-29 change after
|
|
40
|
+
* the locking script is verified. This is the only supported in-place
|
|
41
|
+
* recovery path for a misclassified BRC-29 payment.
|
|
40
42
|
*
|
|
41
43
|
*/
|
|
42
44
|
async function internalizeAction(wallet, auth, args) {
|
|
@@ -73,9 +75,12 @@ async function internalizeAction(wallet, auth, args) {
|
|
|
73
75
|
}
|
|
74
76
|
}
|
|
75
77
|
function setupBasketInsertionForOutput(o, dargs) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
const insertion = o.insertionRemittance;
|
|
79
|
+
if (insertion == null)
|
|
80
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('insertionRemittance', `valid for protocol ${o.protocol}`);
|
|
81
|
+
if (insertion.basket === 'default') {
|
|
82
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('insertionRemittance.basket', 'a non-default basket');
|
|
83
|
+
}
|
|
79
84
|
}
|
|
80
85
|
/**
|
|
81
86
|
* Verifies that the `tx` argument passed to internalizeAction is a valid AtomicBEEF,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalizeAction.js","sourceRoot":"","sources":["../../../../../src/signer/methods/internalizeAction.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"internalizeAction.js","sourceRoot":"","sources":["../../../../../src/signer/methods/internalizeAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resultBeef.d.ts","sourceRoot":"","sources":["../../../../../src/signer/methods/resultBeef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,wBAAgB,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAE/D;AAED,wBAAgB,aAAa,CAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAE/D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setResultBeef = setResultBeef;
|
|
4
|
+
exports.getResultBeef = getResultBeef;
|
|
5
|
+
const resultBeefs = new WeakMap();
|
|
6
|
+
function setResultBeef(result, beef) {
|
|
7
|
+
resultBeefs.set(result, beef);
|
|
8
|
+
}
|
|
9
|
+
function getResultBeef(result) {
|
|
10
|
+
return resultBeefs.get(result);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=resultBeef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resultBeef.js","sourceRoot":"","sources":["../../../../../src/signer/methods/resultBeef.ts"],"names":[],"mappings":";;AAIA,sCAEC;AAED,sCAEC;AARD,MAAM,WAAW,GAAG,IAAI,OAAO,EAAgB,CAAA;AAE/C,SAAgB,aAAa,CAAE,MAAc,EAAE,IAAU;IACvD,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC/B,CAAC;AAED,SAAgB,aAAa,CAAE,MAAc;IAC3C,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signAction.d.ts","sourceRoot":"","sources":["../../../../../src/signer/methods/signAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAc,MAAM,UAAU,CAAA;AAExH,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"signAction.d.ts","sourceRoot":"","sources":["../../../../../src/signer/methods/signAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAc,MAAM,UAAU,CAAA;AAExH,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAIrC,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,EAAE,CAAC,EAAE,UAAU,CAAA;IACf,eAAe,CAAC,EAAE,cAAc,EAAE,CAAA;IAClC,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CACzC;AAED,wBAAsB,UAAU,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8BhH"}
|
|
@@ -5,6 +5,7 @@ const sdk_1 = require("@bsv/sdk");
|
|
|
5
5
|
const createAction_1 = require("./createAction");
|
|
6
6
|
const completeSignedTransaction_1 = require("./completeSignedTransaction");
|
|
7
7
|
const WERR_errors_1 = require("../../sdk/WERR_errors");
|
|
8
|
+
const resultBeef_1 = require("./resultBeef");
|
|
8
9
|
async function signAction(wallet, auth, args) {
|
|
9
10
|
const prior = wallet.pendingSignActions[args.reference];
|
|
10
11
|
if (!prior) {
|
|
@@ -16,7 +17,9 @@ async function signAction(wallet, auth, args) {
|
|
|
16
17
|
prior.tx = await (0, completeSignedTransaction_1.completeSignedTransaction)(prior, vargs.spends, wallet);
|
|
17
18
|
const { sendWithResults, notDelayedResults } = await (0, createAction_1.processAction)(prior, wallet, auth, vargs);
|
|
18
19
|
const txid = prior.tx.id('hex');
|
|
19
|
-
const beef =
|
|
20
|
+
const beef = prior.dcr.inputBeef instanceof Uint8Array
|
|
21
|
+
? sdk_1.Beef.fromBinaryView(prior.dcr.inputBeef)
|
|
22
|
+
: sdk_1.Beef.fromBinary(prior.dcr.inputBeef);
|
|
20
23
|
beef.mergeTransaction(prior.tx);
|
|
21
24
|
(0, completeSignedTransaction_1.verifyUnlockScripts)(txid, beef);
|
|
22
25
|
const r = {
|
|
@@ -25,6 +28,8 @@ async function signAction(wallet, auth, args) {
|
|
|
25
28
|
sendWithResults,
|
|
26
29
|
notDelayedResults
|
|
27
30
|
};
|
|
31
|
+
beef.atomicTxid = txid;
|
|
32
|
+
(0, resultBeef_1.setResultBeef)(r, beef);
|
|
28
33
|
return r;
|
|
29
34
|
}
|
|
30
35
|
function mergePriorOptions(caVargs, saArgs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signAction.js","sourceRoot":"","sources":["../../../../../src/signer/methods/signAction.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"signAction.js","sourceRoot":"","sources":["../../../../../src/signer/methods/signAction.ts"],"names":[],"mappings":";;AAeA,gCA8BC;AA7CD,kCAAwH;AACxH,iDAA8C;AAE9C,2EAA4F;AAE5F,uDAA2E;AAC3E,6CAA4C;AASrC,KAAK,UAAU,UAAU,CAAE,MAAc,EAAE,IAAY,EAAE,IAAoB;IAClF,MAAM,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,MAAM,IAAI,kCAAoB,CAAC,8EAA8E,CAAC,CAAA;IAAC,CAAC;IAC9H,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI;QAAE,MAAM,IAAI,2BAAa,CAAC,mCAAmC,CAAC,CAAA;IAE7F,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAEjD,KAAK,CAAC,EAAE,GAAG,MAAM,IAAA,qDAAyB,EAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEvE,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAA,4BAAa,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAE9F,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,YAAY,UAAU;QACpD,CAAC,CAAC,UAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;QAC1C,CAAC,CAAC,UAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAE/B,IAAA,+CAAmB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE/B,MAAM,CAAC,GAAsB;QAC3B,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACxB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QACxE,eAAe;QACf,iBAAiB;KAClB,CAAA;IAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACtB,IAAA,0BAAa,EAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAEtB,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,iBAAiB,CACxB,OAAyC,EACzC,MAAsB;IAEtB,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC,CAAA;IACzC,SAAS,CAAC,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAA;IAC3E,SAAS,CAAC,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,cAAc,CAAA;IAC3D,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAA;IAC3C,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAA;IAC/C,OAAO,gBAAU,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAA;AAClD,CAAC"}
|
|
@@ -154,6 +154,23 @@ export declare abstract class StorageProvider extends StorageReaderWriter implem
|
|
|
154
154
|
* Alterations of "typically" to handle:
|
|
155
155
|
*/
|
|
156
156
|
updateProvenTxReqWithNewProvenTx(args: UpdateProvenTxReqWithNewProvenTxArgs): Promise<UpdateProvenTxReqWithNewProvenTxResult>;
|
|
157
|
+
/**
|
|
158
|
+
* Reconcile completed proof requests whose transaction fan-out previously
|
|
159
|
+
* failed or whose durable notification state drifted.
|
|
160
|
+
*
|
|
161
|
+
* This is called by TaskReviewStatus so a completed request with
|
|
162
|
+
* `notified = false` is retried and can become eligible for normal purge.
|
|
163
|
+
*/
|
|
164
|
+
reconcileCompletedProvenTxReqs(): Promise<{
|
|
165
|
+
log: string;
|
|
166
|
+
}>;
|
|
167
|
+
/**
|
|
168
|
+
* Restore every failed local copy of a transaction before proof completion.
|
|
169
|
+
* Also heals the request's notification set from the authoritative txid
|
|
170
|
+
* lookup so TaskUnFail cannot omit a local copy after notification drift.
|
|
171
|
+
*/
|
|
172
|
+
unfailTransactionsForProof(req: EntityProvenTxReq, indent?: number, requestUpdate?: Pick<TableProvenTxReqDynamics, 'status' | 'attempts'>): Promise<string>;
|
|
173
|
+
private reconcileProvenTxReqTransactions;
|
|
157
174
|
/**
|
|
158
175
|
* For each spendable output in the 'default' basket of the authenticated user,
|
|
159
176
|
* verify that the output script, satoshis, vout and txid match that of an output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageProvider.d.ts","sourceRoot":"","sources":["../../../../src/storage/StorageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,IAAI,EACJ,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,sBAAsB,EACtB,SAAS,EACT,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,YAAY,
|
|
1
|
+
{"version":3,"file":"StorageProvider.d.ts","sourceRoot":"","sources":["../../../../src/storage/StorageProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -597,11 +597,15 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
597
597
|
if (req.provenTxId != null && req.provenTxId > 0) {
|
|
598
598
|
// Someone beat us to it, grab what we need for results...
|
|
599
599
|
proven = new entities_1.EntityProvenTx((0, utilityHelpers_1.verifyOne)(await this.findProvenTxs({ partial: { txid: args.txid } })));
|
|
600
|
+
if (req.status !== 'completed' || req.provenTxId !== proven.provenTxId) {
|
|
601
|
+
req.status = 'completed';
|
|
602
|
+
req.provenTxId = proven.provenTxId;
|
|
603
|
+
await req.updateStorageDynamicProperties(this);
|
|
604
|
+
}
|
|
600
605
|
}
|
|
601
606
|
else {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
const { proven: api, isNew } = await this.findOrInsertProvenTx({
|
|
607
|
+
proven = await this.transaction(async (trx) => {
|
|
608
|
+
const { proven: api } = await this.findOrInsertProvenTx({
|
|
605
609
|
created_at: new Date(),
|
|
606
610
|
updated_at: new Date(),
|
|
607
611
|
provenTxId: 0,
|
|
@@ -613,26 +617,215 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
613
617
|
blockHash: args.blockHash,
|
|
614
618
|
merkleRoot: args.merkleRoot
|
|
615
619
|
}, trx);
|
|
616
|
-
|
|
617
|
-
if (
|
|
620
|
+
const found = new entities_1.EntityProvenTx(api);
|
|
621
|
+
if (req.status !== 'completed' || req.provenTxId !== found.provenTxId) {
|
|
618
622
|
req.status = 'completed';
|
|
619
|
-
req.provenTxId =
|
|
623
|
+
req.provenTxId = found.provenTxId;
|
|
620
624
|
await req.updateStorageDynamicProperties(this, trx);
|
|
621
|
-
// upate the transaction notifications outside of storage transaction....
|
|
622
625
|
}
|
|
623
|
-
return
|
|
624
|
-
})
|
|
625
|
-
if (isNew) {
|
|
626
|
-
await (0, storageProviderHelpers_1.notifyTransactionsOfProof)(req.notify.transactionIds ?? [], proven.provenTxId, note => req.addHistoryNote(note), async () => { await req.updateStorageDynamicProperties(this); }, async (id, update) => { await this.updateTransaction(id, update); });
|
|
627
|
-
}
|
|
626
|
+
return found;
|
|
627
|
+
});
|
|
628
628
|
}
|
|
629
|
+
await this.reconcileProvenTxReqTransactions(req, proven);
|
|
629
630
|
const r = {
|
|
630
631
|
status: req.status,
|
|
631
632
|
history: req.apiHistory,
|
|
632
|
-
provenTxId: proven.provenTxId
|
|
633
|
+
provenTxId: proven.provenTxId,
|
|
634
|
+
notified: req.notified,
|
|
635
|
+
notify: req.apiNotify
|
|
633
636
|
};
|
|
634
637
|
return r;
|
|
635
638
|
}
|
|
639
|
+
/**
|
|
640
|
+
* Reconcile completed proof requests whose transaction fan-out previously
|
|
641
|
+
* failed or whose durable notification state drifted.
|
|
642
|
+
*
|
|
643
|
+
* This is called by TaskReviewStatus so a completed request with
|
|
644
|
+
* `notified = false` is retried and can become eligible for normal purge.
|
|
645
|
+
*/
|
|
646
|
+
async reconcileCompletedProvenTxReqs() {
|
|
647
|
+
let log = '';
|
|
648
|
+
const reqs = await this.findProvenTxReqs({
|
|
649
|
+
partial: { status: 'completed', notified: false }
|
|
650
|
+
});
|
|
651
|
+
for (const reqApi of reqs) {
|
|
652
|
+
const req = new entities_1.EntityProvenTxReq(reqApi);
|
|
653
|
+
if (req.provenTxId == null || req.provenTxId <= 0) {
|
|
654
|
+
log += `completed req ${req.id} cannot reconcile without provenTxId\n`;
|
|
655
|
+
continue;
|
|
656
|
+
}
|
|
657
|
+
const provenApi = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({
|
|
658
|
+
partial: { provenTxId: req.provenTxId }
|
|
659
|
+
}));
|
|
660
|
+
if (provenApi == null) {
|
|
661
|
+
log += `completed req ${req.id} cannot reconcile missing provenTx ${req.provenTxId}\n`;
|
|
662
|
+
continue;
|
|
663
|
+
}
|
|
664
|
+
await this.reconcileProvenTxReqTransactions(req, new entities_1.EntityProvenTx(provenApi));
|
|
665
|
+
if (req.notified)
|
|
666
|
+
log += `completed req ${req.id} transaction notifications reconciled\n`;
|
|
667
|
+
}
|
|
668
|
+
return { log };
|
|
669
|
+
}
|
|
670
|
+
/**
|
|
671
|
+
* Restore every failed local copy of a transaction before proof completion.
|
|
672
|
+
* Also heals the request's notification set from the authoritative txid
|
|
673
|
+
* lookup so TaskUnFail cannot omit a local copy after notification drift.
|
|
674
|
+
*/
|
|
675
|
+
async unfailTransactionsForProof(req, indent = 0, requestUpdate) {
|
|
676
|
+
const transactions = await this.findTransactions({
|
|
677
|
+
partial: { txid: req.txid },
|
|
678
|
+
noRawTx: true
|
|
679
|
+
});
|
|
680
|
+
const transactionsToRepair = transactions.filter(transaction => requestUpdate != null || transaction.status === 'failed');
|
|
681
|
+
// Proof completion is the hot path. If no failed transaction needs repair,
|
|
682
|
+
// notification reconciliation below will perform the required atomic work;
|
|
683
|
+
// avoid an otherwise empty refresh/write transaction here.
|
|
684
|
+
if (transactionsToRepair.length === 0 && requestUpdate == null)
|
|
685
|
+
return '';
|
|
686
|
+
// Refresh only after deciding recovery is required, while the caller has
|
|
687
|
+
// not yet applied an intended request transition. TaskUnFail passes that
|
|
688
|
+
// transition separately so it is persisted atomically with bookkeeping.
|
|
689
|
+
await req.refreshFromStorage(this);
|
|
690
|
+
const preparedTransactionIds = new Set(transactionsToRepair.map(transaction => transaction.transactionId));
|
|
691
|
+
const outputVerdicts = new Map();
|
|
692
|
+
const bsvtx = transactionsToRepair.length > 0 ? sdk_1.Transaction.fromBinary(req.rawTx) : undefined;
|
|
693
|
+
// UTXO checks can call external services. Complete every check before
|
|
694
|
+
// opening the write transaction so network latency never holds DB locks.
|
|
695
|
+
if (transactionsToRepair.length > 0) {
|
|
696
|
+
const services = this.getServices();
|
|
697
|
+
for (const transaction of transactionsToRepair) {
|
|
698
|
+
const outputs = await this.findOutputs({
|
|
699
|
+
partial: { userId: transaction.userId, transactionId: transaction.transactionId }
|
|
700
|
+
});
|
|
701
|
+
for (const output of outputs) {
|
|
702
|
+
const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
|
|
703
|
+
await this.validateOutputScript(output);
|
|
704
|
+
outputVerdicts.set(outputId, output.lockingScript == null ? undefined : await services.isUtxo(output));
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
return await this.transaction(async (trx) => {
|
|
709
|
+
let log = '';
|
|
710
|
+
await req.refreshFromStorage(this, trx);
|
|
711
|
+
const currentTransactions = await this.findTransactions({
|
|
712
|
+
partial: { txid: req.txid },
|
|
713
|
+
noRawTx: true,
|
|
714
|
+
trx
|
|
715
|
+
});
|
|
716
|
+
const knownNotificationIds = new Set(req.notify.transactionIds ?? []);
|
|
717
|
+
if (requestUpdate != null) {
|
|
718
|
+
req.status = requestUpdate.status;
|
|
719
|
+
req.attempts = requestUpdate.attempts;
|
|
720
|
+
}
|
|
721
|
+
for (const tx of currentTransactions) {
|
|
722
|
+
if (!knownNotificationIds.has(tx.transactionId)) {
|
|
723
|
+
req.addNotifyTransactionId(tx.transactionId);
|
|
724
|
+
knownNotificationIds.add(tx.transactionId);
|
|
725
|
+
}
|
|
726
|
+
const shouldRepair = requestUpdate != null || tx.status === 'failed';
|
|
727
|
+
if (!shouldRepair)
|
|
728
|
+
continue;
|
|
729
|
+
if (bsvtx == null || !preparedTransactionIds.has(tx.transactionId)) {
|
|
730
|
+
throw new WERR_errors_1.WERR_INTERNAL(`Transaction ${tx.transactionId} changed while preparing proof recovery.`);
|
|
731
|
+
}
|
|
732
|
+
await this.updateTransaction(tx.transactionId, { status: 'unproven' }, trx);
|
|
733
|
+
log += ' '.repeat(indent) + `transaction ${tx.transactionId} status is now 'unproven'\n`;
|
|
734
|
+
let vin = -1;
|
|
735
|
+
for (const input of bsvtx.inputs) {
|
|
736
|
+
vin++;
|
|
737
|
+
const sourceTXID = input.sourceTXID;
|
|
738
|
+
if (sourceTXID == null) {
|
|
739
|
+
log += ' '.repeat(indent + 2) + `input ${vin} has no source transaction id\n`;
|
|
740
|
+
continue;
|
|
741
|
+
}
|
|
742
|
+
const outputs = await this.findOutputs({
|
|
743
|
+
partial: {
|
|
744
|
+
userId: tx.userId,
|
|
745
|
+
txid: sourceTXID,
|
|
746
|
+
vout: input.sourceOutputIndex
|
|
747
|
+
},
|
|
748
|
+
trx
|
|
749
|
+
});
|
|
750
|
+
if (outputs.length === 1) {
|
|
751
|
+
const output = outputs[0];
|
|
752
|
+
log += ' '.repeat(indent + 2) +
|
|
753
|
+
`input ${vin} matched to output ${output.outputId} updated spentBy ${tx.transactionId}\n`;
|
|
754
|
+
await this.updateOutput((0, utilityHelpers_1.verifyId)(output.outputId), { spendable: false, spentBy: tx.transactionId }, trx);
|
|
755
|
+
}
|
|
756
|
+
else {
|
|
757
|
+
log += ' '.repeat(indent + 2) + `input ${vin} not matched to user's outputs\n`;
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
const outputs = await this.findOutputs({
|
|
761
|
+
partial: { userId: tx.userId, transactionId: tx.transactionId },
|
|
762
|
+
trx
|
|
763
|
+
});
|
|
764
|
+
for (const output of outputs) {
|
|
765
|
+
const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
|
|
766
|
+
if (!outputVerdicts.has(outputId)) {
|
|
767
|
+
throw new WERR_errors_1.WERR_INTERNAL(`Output ${outputId} changed while preparing proof recovery.`);
|
|
768
|
+
}
|
|
769
|
+
const isUtxo = outputVerdicts.get(outputId);
|
|
770
|
+
if (isUtxo == null) {
|
|
771
|
+
log += ' '.repeat(indent + 2) + `output ${output.outputId} does not have a valid locking script\n`;
|
|
772
|
+
}
|
|
773
|
+
else if (isUtxo === output.spendable) {
|
|
774
|
+
log += ' '.repeat(indent + 2) + `output ${output.outputId} unchanged\n`;
|
|
775
|
+
}
|
|
776
|
+
else {
|
|
777
|
+
log += ' '.repeat(indent + 2) +
|
|
778
|
+
`output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
|
|
779
|
+
await this.updateOutput(outputId, { spendable: isUtxo }, trx);
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
await req.updateStorageDynamicProperties(this, trx);
|
|
784
|
+
return log;
|
|
785
|
+
});
|
|
786
|
+
}
|
|
787
|
+
async reconcileProvenTxReqTransactions(req, proven) {
|
|
788
|
+
// A transaction can be internalized concurrently by several users. Their
|
|
789
|
+
// transaction rows share a txid but race while merging the JSON notify
|
|
790
|
+
// list, so a last-writer-wins update can omit one local copy. A valid proof
|
|
791
|
+
// is authoritative for every local transaction with this txid: discover
|
|
792
|
+
// them from the indexed transaction table and atomically heal both the
|
|
793
|
+
// durable notify set and any row that missed the original completion.
|
|
794
|
+
// Keep the clean proof-completion path identical to the normal notification
|
|
795
|
+
// transaction. Only leave it when failed rows require external UTXO checks,
|
|
796
|
+
// which must run without an open transaction.
|
|
797
|
+
let repairAttempts = 0;
|
|
798
|
+
for (;;) {
|
|
799
|
+
const needsRepair = await this.transaction(async (trx) => {
|
|
800
|
+
await req.refreshFromStorage(this, trx);
|
|
801
|
+
const transactions = await this.findTransactions({ partial: { txid: req.txid }, trx });
|
|
802
|
+
if (transactions.some(transaction => transaction.status === 'failed'))
|
|
803
|
+
return true;
|
|
804
|
+
const knownNotificationIds = new Set(req.notify.transactionIds ?? []);
|
|
805
|
+
for (const transaction of transactions) {
|
|
806
|
+
if (!knownNotificationIds.has(transaction.transactionId)) {
|
|
807
|
+
req.addNotifyTransactionId(transaction.transactionId);
|
|
808
|
+
knownNotificationIds.add(transaction.transactionId);
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
const transactionIdsNeedingProof = transactions
|
|
812
|
+
.filter(transaction => transaction.status !== 'completed' || transaction.provenTxId !== proven.provenTxId)
|
|
813
|
+
.map(transaction => transaction.transactionId);
|
|
814
|
+
const updatesSucceeded = await (0, storageProviderHelpers_1.notifyTransactionsOfProof)(transactionIdsNeedingProof, proven.provenTxId, note => req.addHistoryNote(note), async (id, update) => { await this.updateTransaction(id, update, trx); });
|
|
815
|
+
const completedTransactions = await this.findTransactions({ partial: { txid: req.txid }, trx });
|
|
816
|
+
req.notified = updatesSucceeded && completedTransactions.every(transaction => transaction.status === 'completed' && transaction.provenTxId === proven.provenTxId);
|
|
817
|
+
await req.updateStorageDynamicProperties(this, trx);
|
|
818
|
+
return false;
|
|
819
|
+
});
|
|
820
|
+
if (!needsRepair)
|
|
821
|
+
return;
|
|
822
|
+
if (repairAttempts >= 2) {
|
|
823
|
+
throw new WERR_errors_1.WERR_INTERNAL(`Transactions for ${req.txid} repeatedly changed to failed during proof recovery.`);
|
|
824
|
+
}
|
|
825
|
+
repairAttempts++;
|
|
826
|
+
await this.unfailTransactionsForProof(req);
|
|
827
|
+
}
|
|
828
|
+
}
|
|
636
829
|
/**
|
|
637
830
|
* For each spendable output in the 'default' basket of the authenticated user,
|
|
638
831
|
* verify that the output script, satoshis, vout and txid match that of an output
|