@1sat/actions 0.0.192 → 0.0.193
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/apply/applyIntent.d.ts +18 -0
- package/dist/apply/applyIntent.d.ts.map +1 -0
- package/dist/apply/applyIntent.js +32 -0
- package/dist/apply/applyIntent.js.map +1 -0
- package/dist/apply/index.d.ts +9 -0
- package/dist/apply/index.d.ts.map +1 -0
- package/dist/apply/index.js +8 -0
- package/dist/apply/index.js.map +1 -0
- package/dist/apply/inscribeSigma.d.ts +15 -0
- package/dist/apply/inscribeSigma.d.ts.map +1 -0
- package/dist/apply/inscribeSigma.js +92 -0
- package/dist/apply/inscribeSigma.js.map +1 -0
- package/dist/apply/opnsRegister.d.ts +7 -0
- package/dist/apply/opnsRegister.d.ts.map +1 -0
- package/dist/apply/opnsRegister.js +29 -0
- package/dist/apply/opnsRegister.js.map +1 -0
- package/dist/apply/prepare.d.ts +12 -0
- package/dist/apply/prepare.d.ts.map +1 -0
- package/dist/apply/prepare.js +26 -0
- package/dist/apply/prepare.js.map +1 -0
- package/dist/apply/registry.d.ts +8 -0
- package/dist/apply/registry.d.ts.map +1 -0
- package/dist/apply/registry.js +31 -0
- package/dist/apply/registry.js.map +1 -0
- package/dist/apply/stampScriptTags.d.ts +19 -0
- package/dist/apply/stampScriptTags.d.ts.map +1 -0
- package/dist/apply/stampScriptTags.js +47 -0
- package/dist/apply/stampScriptTags.js.map +1 -0
- package/dist/apply/validateOnly.d.ts +7 -0
- package/dist/apply/validateOnly.d.ts.map +1 -0
- package/dist/apply/validateOnly.js +8 -0
- package/dist/apply/validateOnly.js.map +1 -0
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +9 -5
- package/dist/collections/index.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/inscriptions/index.d.ts.map +1 -1
- package/dist/inscriptions/index.js +23 -58
- package/dist/inscriptions/index.js.map +1 -1
- package/dist/locks/index.d.ts.map +1 -1
- package/dist/locks/index.js +16 -7
- package/dist/locks/index.js.map +1 -1
- package/dist/opns/index.d.ts.map +1 -1
- package/dist/opns/index.js +75 -50
- package/dist/opns/index.js.map +1 -1
- package/dist/ordinals/index.d.ts +2 -0
- package/dist/ordinals/index.d.ts.map +1 -1
- package/dist/ordinals/index.js +61 -47
- package/dist/ordinals/index.js.map +1 -1
- package/dist/signing/aip.d.ts +3 -4
- package/dist/signing/aip.d.ts.map +1 -1
- package/dist/signing/aip.js +8 -14
- package/dist/signing/aip.js.map +1 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +13 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +73 -152
- package/dist/tokens/index.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/createTrackedAction.d.ts +9 -0
- package/dist/utils/createTrackedAction.d.ts.map +1 -1
- package/dist/utils/createTrackedAction.js +24 -9
- package/dist/utils/createTrackedAction.js.map +1 -1
- package/dist/utils/resolveDestination.d.ts +8 -0
- package/dist/utils/resolveDestination.d.ts.map +1 -1
- package/dist/utils/resolveDestination.js +1 -1
- package/dist/utils/resolveDestination.js.map +1 -1
- package/dist/utils/signOrdinalInput.d.ts.map +1 -1
- package/dist/utils/signOrdinalInput.js +56 -4
- package/dist/utils/signOrdinalInput.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P1SAT_LABEL } from '@1sat/types';
|
|
1
|
+
import { P1SAT_LABEL, buildActionIdLabel, hasP1SatDispatchLabel, parseActionIdLabel, } from '@1sat/types';
|
|
2
2
|
import { Utils, } from '@bsv/sdk';
|
|
3
3
|
import { completeSignedAction, } from './completeSignedAction';
|
|
4
4
|
/**
|
|
@@ -9,6 +9,22 @@ export function randomActionId() {
|
|
|
9
9
|
crypto.getRandomValues(bytes);
|
|
10
10
|
return Utils.toHex(Array.from(bytes));
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Read the actionId from `args.labels`, stamping a fresh one when absent.
|
|
14
|
+
*
|
|
15
|
+
* Call this before anything derives from the actionId — notably apply, which
|
|
16
|
+
* runs ahead of `createTrackedAction` on a base wallet. Intermediate keyIDs
|
|
17
|
+
* derived from it are recomputable from the action record instead of being
|
|
18
|
+
* lost with a wall-clock value.
|
|
19
|
+
*/
|
|
20
|
+
export function ensureActionId(args) {
|
|
21
|
+
const existing = parseActionIdLabel(args.labels);
|
|
22
|
+
if (existing)
|
|
23
|
+
return existing;
|
|
24
|
+
const actionId = randomActionId();
|
|
25
|
+
args.labels = [...(args.labels ?? []), buildActionIdLabel(actionId)];
|
|
26
|
+
return actionId;
|
|
27
|
+
}
|
|
12
28
|
/**
|
|
13
29
|
* Inject tracking tags into outputs that have baskets.
|
|
14
30
|
*
|
|
@@ -29,15 +45,14 @@ function applyTrackingTags(args, actionId) {
|
|
|
29
45
|
});
|
|
30
46
|
}
|
|
31
47
|
/**
|
|
32
|
-
* Ensure the args carry
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* captured commitment — which would prompt the user once per input.
|
|
48
|
+
* Ensure the args carry a 1Sat dispatch label so WalletPermissionsManager
|
|
49
|
+
* routes createAction to the registered module. Intent labels
|
|
50
|
+
* (`p 1sat intent …`) already satisfy dispatch; otherwise append bare
|
|
51
|
+
* `p 1sat action`.
|
|
37
52
|
*/
|
|
38
53
|
function applyOneSatLabel(args) {
|
|
39
54
|
const labels = args.labels ?? [];
|
|
40
|
-
if (labels
|
|
55
|
+
if (hasP1SatDispatchLabel(labels))
|
|
41
56
|
return;
|
|
42
57
|
args.labels = [...labels, P1SAT_LABEL];
|
|
43
58
|
}
|
|
@@ -54,7 +69,7 @@ function applyOneSatLabel(args) {
|
|
|
54
69
|
* @returns The createAction result with signableTransaction, plus the generated actionId
|
|
55
70
|
*/
|
|
56
71
|
export async function createTrackedAction(wallet, args, opts = {}) {
|
|
57
|
-
const actionId = randomActionId();
|
|
72
|
+
const actionId = opts.bypassP1Sat ? randomActionId() : ensureActionId(args);
|
|
58
73
|
if (!opts.bypassP1Sat) {
|
|
59
74
|
applyTrackingTags(args, actionId);
|
|
60
75
|
applyOneSatLabel(args);
|
|
@@ -89,7 +104,7 @@ const noOpSign = async () => ({});
|
|
|
89
104
|
*/
|
|
90
105
|
export async function executeTrackedAction(wallet, args, fundingProvider, inputBEEF, sign, opts = {}) {
|
|
91
106
|
if (fundingProvider) {
|
|
92
|
-
const actionId = randomActionId();
|
|
107
|
+
const actionId = opts.bypassP1Sat ? randomActionId() : ensureActionId(args);
|
|
93
108
|
if (!opts.bypassP1Sat) {
|
|
94
109
|
applyTrackingTags(args, actionId);
|
|
95
110
|
applyOneSatLabel(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTrackedAction.js","sourceRoot":"","sources":["../../src/utils/createTrackedAction.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"createTrackedAction.js","sourceRoot":"","sources":["../../src/utils/createTrackedAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,14 @@ export interface ResolveDestinationOptions {
|
|
|
36
36
|
protocolID: WalletProtocol;
|
|
37
37
|
/** Prefix for the generated keyID — used for counterparty/self. */
|
|
38
38
|
keyIDPrefix: string;
|
|
39
|
+
/**
|
|
40
|
+
* Action id to derive the keyID from, so the derivation is recomputable
|
|
41
|
+
* from the action record. Callers should mint one with `randomActionId()`
|
|
42
|
+
* before building outputs and stamp it on the args via
|
|
43
|
+
* `buildActionIdLabel`, so `createTrackedAction` reuses the same value.
|
|
44
|
+
* Falls back to a wall-clock value, which is not recoverable.
|
|
45
|
+
*/
|
|
46
|
+
actionId?: string;
|
|
39
47
|
}
|
|
40
48
|
/**
|
|
41
49
|
* Resolve a {@link Destination} into a locking script and (when applicable)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDestination.d.ts","sourceRoot":"","sources":["../../src/utils/resolveDestination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EACN,aAAa,EAGb,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,+CAA+C;IAC/C,aAAa,EAAE,aAAa,CAAA;IAC5B;;;;;;;;;;;;;;;;OAgBG;IACH,kBAAkB,CAAC,EAAE;QACpB,UAAU,EAAE,cAAc,CAAA;QAC1B,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,CAAC,EAAE,kBAAkB,CAAA;QACjC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KACxB,CAAA;CACD;AAED,MAAM,WAAW,yBAAyB;IACzC,uEAAuE;IACvE,UAAU,EAAE,cAAc,CAAA;IAC1B,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"resolveDestination.d.ts","sourceRoot":"","sources":["../../src/utils/resolveDestination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EACN,aAAa,EAGb,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,+CAA+C;IAC/C,aAAa,EAAE,aAAa,CAAA;IAC5B;;;;;;;;;;;;;;;;OAgBG;IACH,kBAAkB,CAAC,EAAE;QACpB,UAAU,EAAE,cAAc,CAAA;QAC1B,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,CAAC,EAAE,kBAAkB,CAAA;QACjC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KACxB,CAAA;CACD;AAED,MAAM,WAAW,yBAAyB;IACzC,uEAAuE;IACvE,UAAU,EAAE,cAAc,CAAA;IAC1B,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACvC,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,IAAI,EAAE,yBAAyB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA+D9B"}
|
|
@@ -49,7 +49,7 @@ export async function resolveDestination(ctx, destination, opts) {
|
|
|
49
49
|
// counterparty path — also covers the default (undefined → 'self').
|
|
50
50
|
const counterparty = destination?.counterparty ?? 'self';
|
|
51
51
|
const isSelf = counterparty === 'self';
|
|
52
|
-
const keyID = `${opts.keyIDPrefix}-${Date.now()}`;
|
|
52
|
+
const keyID = `${opts.keyIDPrefix}-${opts.actionId ?? Date.now()}`;
|
|
53
53
|
const { publicKey } = await ctx.wallet.getPublicKey({
|
|
54
54
|
protocolID: opts.protocolID,
|
|
55
55
|
keyID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDestination.js","sourceRoot":"","sources":["../../src/utils/resolveDestination.ts"],"names":[],"mappings":"AACA,OAAO,EACN,aAAa,EACb,KAAK,EACL,SAAS,GAGT,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"resolveDestination.js","sourceRoot":"","sources":["../../src/utils/resolveDestination.ts"],"names":[],"mappings":"AACA,OAAO,EACN,aAAa,EACb,KAAK,EACL,SAAS,GAGT,MAAM,UAAU,CAAA;AAiDjB;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,GAAkB,EAClB,WAAoC,EACpC,IAA+B;IAE/B,IAAI,WAAW,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,EAAE,GACP,OAAO,WAAW,CAAC,aAAa,KAAK,QAAQ;YAC5C,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC;YAClD,CAAC,CAAE,WAAW,CAAC,aAA+B,CAAA;QAChD,oEAAoE;QACpE,iEAAiE;QACjE,mEAAmE;QACnE,oEAAoE;QACpE,+DAA+D;QAC/D,gEAAgE;QAChE,IAAI,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,WAAW,CAAC,kBAA6C,CAAA;YACpE,MAAM,UAAU,GAAG,EAAE,CAAC,UAAwC,CAAA;YAC9D,MAAM,KAAK,GAAG,EAAE,CAAC,KAA2B,CAAA;YAC5C,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAA;gBACnE,OAAO;oBACN,aAAa,EAAE,EAAE;oBACjB,kBAAkB,EAAE;wBACnB,UAAU;wBACV,KAAK;wBACL,GAAG,CAAC,EAAE,CAAC,YAAY,KAAK,SAAS,IAAI;4BACpC,YAAY,EAAE,EAAE,CAAC,YAAkC;yBACnD,CAAC;wBACF,GAAG,IAAI;qBACP;iBACD,CAAA;YACF,CAAC;QACF,CAAC;QACD,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CAAA;IAC7B,CAAC;IAED,IAAI,WAAW,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO;YACN,aAAa,EAAE,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;SACpD,CAAA;IACF,CAAC;IAED,oEAAoE;IACpE,MAAM,YAAY,GAAG,WAAW,EAAE,YAAY,IAAI,MAAM,CAAA;IACxD,MAAM,MAAM,GAAG,YAAY,KAAK,MAAM,CAAA;IACtC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;IAElE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;QACnD,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK;QACL,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;QAC5C,OAAO,EAAE,MAAM;KACf,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAA;IAE3D,MAAM,KAAK,GAAG,WAAW,EAAE,kBAAkB,IAAI,EAAE,CAAA;IACnD,OAAO;QACN,aAAa,EAAE,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QACxC,kBAAkB,EAAE;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK;YACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;YACnC,GAAG,KAAK;SACR;KACD,CAAA;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOrdinalInput.d.ts","sourceRoot":"","sources":["../../src/utils/signOrdinalInput.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"signOrdinalInput.d.ts","sourceRoot":"","sources":["../../src/utils/signOrdinalInput.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,KAAK,WAAW,EAGhB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAG7C,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,aAAyB,CAAA;AAEvD,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,KAAK,CAAA;AAExC,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC,MAAM,WAAW,yBAAyB;IACzC,UAAU,EAAE,cAAc,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,8BAA8B,CAC7C,kBAAkB,EAAE,MAAM,GACxB,yBAAyB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAM/C;AAED,wBAAgB,oCAAoC,CACnD,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACpC,MAAM,CAOR;AAsED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BrC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OPNS_PUSHDROP_TEMPLATE } from '@1sat/types';
|
|
2
|
-
import {
|
|
2
|
+
import { Hash, Signature, TransactionSignature, UnlockingScript, } from '@bsv/sdk';
|
|
3
3
|
import { signP2PKHInput } from './signP2PKH';
|
|
4
4
|
/** @deprecated use OPNS_PUSHDROP_TEMPLATE from @1sat/types */
|
|
5
5
|
export const PUSHDROP_TEMPLATE = OPNS_PUSHDROP_TEMPLATE;
|
|
@@ -25,6 +25,60 @@ export function unlockingScriptLengthForInstructions(customInstructions) {
|
|
|
25
25
|
? PUSHDROP_UNLOCK_LENGTH
|
|
26
26
|
: P2PKH_UNLOCK_LENGTH;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Unlock a PushDrop CHECKSIG input (OpNS published bind).
|
|
30
|
+
*
|
|
31
|
+
* Same permission-module contract as signP2PKHInput: full BIP-143 preimage
|
|
32
|
+
* in `data` so createAction commitment auto-grants; double-SHA in
|
|
33
|
+
* `hashToDirectlySign` for the actual ECDSA (matches stock PushDrop.unlock
|
|
34
|
+
* which passed sha256(preimage) as data and let the wallet hash once more).
|
|
35
|
+
*/
|
|
36
|
+
async function signPushDropInput(ctx, tx, inputIndex, protocolID, keyID, counterparty) {
|
|
37
|
+
const txInput = tx.inputs[inputIndex];
|
|
38
|
+
const sourceLockingScript = txInput.sourceTransaction?.outputs[txInput.sourceOutputIndex]?.lockingScript;
|
|
39
|
+
if (!sourceLockingScript) {
|
|
40
|
+
return { error: `missing-source-locking-script-for-input-${inputIndex}` };
|
|
41
|
+
}
|
|
42
|
+
const sourceTXID = txInput.sourceTXID ?? txInput.sourceTransaction?.id('hex');
|
|
43
|
+
if (!sourceTXID) {
|
|
44
|
+
return { error: `missing-source-txid-for-input-${inputIndex}` };
|
|
45
|
+
}
|
|
46
|
+
const sourceSatoshis = txInput.sourceTransaction?.outputs[txInput.sourceOutputIndex]?.satoshis ?? 1;
|
|
47
|
+
const scope = TransactionSignature.SIGHASH_ALL | TransactionSignature.SIGHASH_FORKID;
|
|
48
|
+
const preimage = TransactionSignature.format({
|
|
49
|
+
sourceTXID,
|
|
50
|
+
sourceOutputIndex: txInput.sourceOutputIndex,
|
|
51
|
+
sourceSatoshis,
|
|
52
|
+
transactionVersion: tx.version,
|
|
53
|
+
otherInputs: tx.inputs
|
|
54
|
+
.filter((_, idx) => idx !== inputIndex)
|
|
55
|
+
.map((inp) => ({
|
|
56
|
+
sourceTXID: inp.sourceTXID ?? inp.sourceTransaction?.id('hex') ?? '',
|
|
57
|
+
sourceOutputIndex: inp.sourceOutputIndex,
|
|
58
|
+
sequence: inp.sequence ?? 0xffffffff,
|
|
59
|
+
})),
|
|
60
|
+
inputIndex,
|
|
61
|
+
outputs: tx.outputs,
|
|
62
|
+
inputSequence: txInput.sequence ?? 0xffffffff,
|
|
63
|
+
subscript: sourceLockingScript,
|
|
64
|
+
lockTime: tx.lockTime,
|
|
65
|
+
scope,
|
|
66
|
+
});
|
|
67
|
+
const sighash = Hash.sha256(Hash.sha256(preimage));
|
|
68
|
+
const { signature: bareSignature } = await ctx.wallet.createSignature({
|
|
69
|
+
protocolID,
|
|
70
|
+
keyID,
|
|
71
|
+
counterparty,
|
|
72
|
+
data: Array.from(preimage),
|
|
73
|
+
hashToDirectlySign: Array.from(sighash),
|
|
74
|
+
});
|
|
75
|
+
const signature = Signature.fromDER([...bareSignature]);
|
|
76
|
+
const txSignature = new TransactionSignature(signature.r, signature.s, scope);
|
|
77
|
+
const sigForScript = txSignature.toChecksigFormat();
|
|
78
|
+
return new UnlockingScript([
|
|
79
|
+
{ op: sigForScript.length, data: sigForScript },
|
|
80
|
+
]).toHex();
|
|
81
|
+
}
|
|
28
82
|
/**
|
|
29
83
|
* Unlock an ordinal input using customInstructions.
|
|
30
84
|
* PushDrop when template === 'pushdrop'; otherwise P2PKH.
|
|
@@ -37,9 +91,7 @@ export async function signOrdinalInput(ctx, tx, inputIndex, customInstructions)
|
|
|
37
91
|
return { error: 'missing-protocol-or-key-id' };
|
|
38
92
|
}
|
|
39
93
|
if (ci.template === OPNS_PUSHDROP_TEMPLATE) {
|
|
40
|
-
|
|
41
|
-
const unlockingScript = await unlocker.sign(tx, inputIndex);
|
|
42
|
-
return unlockingScript.toHex();
|
|
94
|
+
return signPushDropInput(ctx, tx, inputIndex, ci.protocolID, ci.keyID, ci.counterparty ?? 'anyone');
|
|
43
95
|
}
|
|
44
96
|
return signP2PKHInput(ctx, tx, inputIndex, ci.protocolID, ci.keyID, ci.counterparty ?? 'self');
|
|
45
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOrdinalInput.js","sourceRoot":"","sources":["../../src/utils/signOrdinalInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"signOrdinalInput.js","sourceRoot":"","sources":["../../src/utils/signOrdinalInput.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1sat/actions",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.193",
|
|
4
4
|
"description": "Action definitions for the 1Sat SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
],
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@1sat/client": "0.0.
|
|
33
|
-
"@1sat/types": "0.0.
|
|
34
|
-
"@1sat/utils": "0.0.
|
|
35
|
-
"@1sat/wallet": "0.0.
|
|
36
|
-
"@1sat/templates": "0.0.
|
|
32
|
+
"@1sat/client": "0.0.47",
|
|
33
|
+
"@1sat/types": "0.0.38",
|
|
34
|
+
"@1sat/utils": "0.0.31",
|
|
35
|
+
"@1sat/wallet": "0.0.99",
|
|
36
|
+
"@1sat/templates": "0.0.28",
|
|
37
37
|
"@bsv/message-box-client": "^2.2.1"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
@@ -42,6 +42,6 @@
|
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@bsv/sdk": "^2.1.9",
|
|
44
44
|
"typescript": "^5.9.3",
|
|
45
|
-
"@1sat/wallet-remote": "0.0.
|
|
45
|
+
"@1sat/wallet-remote": "0.0.56"
|
|
46
46
|
}
|
|
47
47
|
}
|