@1sat/actions 0.0.235 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/1color/deploy.d.ts +35 -0
- package/dist/1color/deploy.d.ts.map +1 -0
- package/dist/1color/deploy.js +127 -0
- package/dist/1color/deploy.js.map +1 -0
- package/dist/{mandala → 1color}/deploy.test.d.ts.map +1 -1
- package/dist/1color/deploy.test.js +188 -0
- package/dist/1color/deploy.test.js.map +1 -0
- package/dist/1color/index.d.ts +10 -0
- package/dist/{mandala → 1color}/index.d.ts.map +1 -1
- package/dist/1color/index.js +12 -0
- package/dist/1color/index.js.map +1 -0
- package/dist/1color/receipt.d.ts +39 -0
- package/dist/1color/receipt.d.ts.map +1 -0
- package/dist/1color/receipt.js +91 -0
- package/dist/1color/receipt.js.map +1 -0
- package/dist/1color/send.d.ts +52 -0
- package/dist/1color/send.d.ts.map +1 -0
- package/dist/1color/send.js +175 -0
- package/dist/1color/send.js.map +1 -0
- package/dist/{mandala → 1color}/send.test.d.ts.map +1 -1
- package/dist/1color/send.test.js +622 -0
- package/dist/1color/send.test.js.map +1 -0
- package/dist/funding/walletFunding.d.ts +1 -2
- package/dist/funding/walletFunding.d.ts.map +1 -1
- package/dist/funding/walletFunding.js +1 -2
- package/dist/funding/walletFunding.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/listings/cancelOwnedListings.d.ts.map +1 -1
- package/dist/listings/cancelOwnedListings.js +7 -3
- package/dist/listings/cancelOwnedListings.js.map +1 -1
- package/dist/locks/index.d.ts.map +1 -1
- package/dist/locks/index.js +2 -1
- package/dist/locks/index.js.map +1 -1
- package/dist/metanet/delivery.d.ts +69 -0
- package/dist/metanet/delivery.d.ts.map +1 -0
- package/dist/metanet/delivery.js +235 -0
- package/dist/metanet/delivery.js.map +1 -0
- package/dist/metanet/delivery.test.d.ts +2 -0
- package/dist/metanet/delivery.test.d.ts.map +1 -0
- package/dist/metanet/delivery.test.js +125 -0
- package/dist/metanet/delivery.test.js.map +1 -0
- package/dist/metanet/envelope.test.js +1 -1
- package/dist/metanet/envelope.test.js.map +1 -1
- package/dist/metanet/inbox.d.ts +2 -2
- package/dist/metanet/inbox.js +2 -2
- package/dist/metanet/index.d.ts +5 -3
- package/dist/metanet/index.d.ts.map +1 -1
- package/dist/metanet/index.js +6 -4
- package/dist/metanet/index.js.map +1 -1
- package/dist/metanet/receive.d.ts +46 -16
- package/dist/metanet/receive.d.ts.map +1 -1
- package/dist/metanet/receive.js +118 -17
- package/dist/metanet/receive.js.map +1 -1
- package/dist/metanet/relay.d.ts +1 -1
- package/dist/metanet/relay.js +1 -1
- package/dist/metanet/testdata/brc232-vectors.json +86 -0
- package/dist/opns/index.d.ts.map +1 -1
- package/dist/opns/index.js +2 -1
- package/dist/opns/index.js.map +1 -1
- package/dist/ordinals/index.d.ts.map +1 -1
- package/dist/ordinals/index.js +2 -1
- package/dist/ordinals/index.js.map +1 -1
- package/dist/payments/index.d.ts +1 -1
- package/dist/payments/index.js +3 -3
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/sendBsvHandle.test.js +52 -34
- package/dist/payments/sendBsvHandle.test.js.map +1 -1
- package/package.json +10 -9
- package/dist/mandala/deploy.d.ts +0 -89
- package/dist/mandala/deploy.d.ts.map +0 -1
- package/dist/mandala/deploy.js +0 -226
- package/dist/mandala/deploy.js.map +0 -1
- package/dist/mandala/deploy.test.js +0 -281
- package/dist/mandala/deploy.test.js.map +0 -1
- package/dist/mandala/index.d.ts +0 -9
- package/dist/mandala/index.js +0 -17
- package/dist/mandala/index.js.map +0 -1
- package/dist/mandala/receive.d.ts +0 -58
- package/dist/mandala/receive.d.ts.map +0 -1
- package/dist/mandala/receive.js +0 -162
- package/dist/mandala/receive.js.map +0 -1
- package/dist/mandala/send.d.ts +0 -74
- package/dist/mandala/send.d.ts.map +0 -1
- package/dist/mandala/send.js +0 -313
- package/dist/mandala/send.js.map +0 -1
- package/dist/mandala/send.test.js +0 -515
- package/dist/mandala/send.test.js.map +0 -1
- package/dist/mandala/tokenId.d.ts +0 -21
- package/dist/mandala/tokenId.d.ts.map +0 -1
- package/dist/mandala/tokenId.js +0 -29
- package/dist/mandala/tokenId.js.map +0 -1
- /package/dist/{mandala → 1color}/deploy.test.d.ts +0 -0
- /package/dist/{mandala → 1color}/send.test.d.ts +0 -0
package/dist/mandala/deploy.js
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mandala (BRC-162) deploy.
|
|
3
|
-
*
|
|
4
|
-
* Filing: a **label** on the transaction indexes tokens — `mandala` on every
|
|
5
|
-
* Mandala transaction, `mandala <txid> <vout>` per token (`listActions` answers
|
|
6
|
-
* "which tokens does this wallet track", and labels survive outputs being
|
|
7
|
-
* spent). **Per-token baskets** `mandala <txid> <vout>` hold outputs: every
|
|
8
|
-
* value/authority output of a token, the deploy output included.
|
|
9
|
-
*/
|
|
10
|
-
import { OverlayClient } from '@1sat/client';
|
|
11
|
-
import { Mandala } from '@1sat/templates';
|
|
12
|
-
import { MANDALA_DEPLOY_PROTOCOL, MANDALA_LABEL, MANDALA_TOPIC, mandalaTokenBasket, mandalaTokenLabel, } from '@1sat/types';
|
|
13
|
-
import { executeTrackedAction } from '../utils/createTrackedAction.js';
|
|
14
|
-
import { resolveDestination } from '../utils/resolveDestination.js';
|
|
15
|
-
/**
|
|
16
|
-
* File a deploy output into its token's basket: `internalizeAction` on the
|
|
17
|
-
* deploy transaction, vout 0 by `basket insertion` into `mandala <txid> 0` with
|
|
18
|
-
* the derivation triple as customInstructions, labels `mandala` and
|
|
19
|
-
* `mandala <txid> 0`.
|
|
20
|
-
*/
|
|
21
|
-
async function fileDeploy(ctx, txid, tx, customInstructions) {
|
|
22
|
-
const token = { txid, vout: 0 };
|
|
23
|
-
await ctx.wallet.internalizeAction({
|
|
24
|
-
tx,
|
|
25
|
-
outputs: [
|
|
26
|
-
{
|
|
27
|
-
outputIndex: 0,
|
|
28
|
-
protocol: 'basket insertion',
|
|
29
|
-
insertionRemittance: {
|
|
30
|
-
basket: mandalaTokenBasket(token),
|
|
31
|
-
customInstructions,
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
],
|
|
35
|
-
labels: [MANDALA_LABEL, mandalaTokenLabel(token)],
|
|
36
|
-
description: 'File Mandala deploy',
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Deploy a Mandala token: one `createAction` and one `internalizeAction` on
|
|
41
|
-
* the same transaction.
|
|
42
|
-
*
|
|
43
|
-
* 1. `createAction` with the deploy output at vout 0 (`randomizeOutputs:
|
|
44
|
-
* false`) and no basket (an output cannot later be moved out of a basket),
|
|
45
|
-
* customInstructions = the key derivation only, label `mandala`.
|
|
46
|
-
* Broadcast by the wallet, or via `overlay` (see
|
|
47
|
-
* {@link DeployMandalaInput.overlay}).
|
|
48
|
-
* 2. `internalizeAction` on that transaction: vout 0 is inserted into the
|
|
49
|
-
* per-token basket `mandala <txid> 0` with the same customInstructions, and
|
|
50
|
-
* the labels `mandala` and `mandala <txid> 0` are added. When this step
|
|
51
|
-
* fails the result carries `txid`, `tx` and the error; the action is still
|
|
52
|
-
* labelled `mandala`, and {@link fileMandalaDeploy} re-runs the filing.
|
|
53
|
-
*
|
|
54
|
-
* The deploy key derives under `MANDALA_DEPLOY_PROTOCOL` = `[2, 'mandala
|
|
55
|
-
* deploy']`, keyID `mandala-deploy-<hex>`: the token id is this
|
|
56
|
-
* transaction's txid, unknown while the key is derived.
|
|
57
|
-
*
|
|
58
|
-
* The token is named by its BRC-36 deploy outpoint `<txid>.0`; on chain its BRC-162
|
|
59
|
-
* id is the 32-byte txid. Amount and id are read from the script,
|
|
60
|
-
* `sym`/`dec`/`icon` from the deploy payload — none are copied into
|
|
61
|
-
* customInstructions.
|
|
62
|
-
*/
|
|
63
|
-
export const deployMandala = {
|
|
64
|
-
meta: {
|
|
65
|
-
name: 'deployMandala',
|
|
66
|
-
description: 'Deploy a Mandala (BRC-162) token: amount > 0 is fixed supply, 0 is an authority deploy. The token is the BRC-36 deploy outpoint <txid>.0.',
|
|
67
|
-
category: 'tokens',
|
|
68
|
-
inputSchema: {
|
|
69
|
-
type: 'object',
|
|
70
|
-
properties: {
|
|
71
|
-
amount: {
|
|
72
|
-
type: 'string',
|
|
73
|
-
description: 'Supply as a string for bigint: > 0 fixed supply, 0 authority deploy',
|
|
74
|
-
},
|
|
75
|
-
decimals: {
|
|
76
|
-
type: 'integer',
|
|
77
|
-
description: 'Decimal places (0-18)',
|
|
78
|
-
},
|
|
79
|
-
symbol: { type: 'string', description: 'Token symbol/ticker' },
|
|
80
|
-
icon: {
|
|
81
|
-
type: 'string',
|
|
82
|
-
description: 'Icon outpoint (txid_vout), or an output index in the deploy transaction',
|
|
83
|
-
},
|
|
84
|
-
destination: {
|
|
85
|
-
type: 'object',
|
|
86
|
-
description: 'Holder destination. One of lockingScript (hex), counterparty (pubkey), or address. Defaults to self.',
|
|
87
|
-
},
|
|
88
|
-
overlay: {
|
|
89
|
-
type: 'string',
|
|
90
|
-
description: 'Overlay base URL: broadcast as a BRC-22 submit (tm_mandala, tm_<txid>) instead of the wallet broadcast',
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
required: ['amount'],
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
async execute(ctx, input) {
|
|
97
|
-
try {
|
|
98
|
-
const amount = typeof input.amount === 'string' ? BigInt(input.amount) : input.amount;
|
|
99
|
-
const authority = amount === 0n;
|
|
100
|
-
const resolved = await resolveDestination(ctx, input.destination, {
|
|
101
|
-
protocolID: MANDALA_DEPLOY_PROTOCOL,
|
|
102
|
-
keyIDPrefix: 'mandala-deploy',
|
|
103
|
-
});
|
|
104
|
-
const payload = {};
|
|
105
|
-
if (input.symbol !== undefined)
|
|
106
|
-
payload.sym = input.symbol;
|
|
107
|
-
if (input.decimals !== undefined)
|
|
108
|
-
payload.dec = input.decimals;
|
|
109
|
-
if (input.icon !== undefined)
|
|
110
|
-
payload.icon = input.icon;
|
|
111
|
-
const deploy = authority
|
|
112
|
-
? Mandala.deployAuthority({ lock: resolved.lockingScript, payload })
|
|
113
|
-
: Mandala.deployValue(amount, {
|
|
114
|
-
lock: resolved.lockingScript,
|
|
115
|
-
payload,
|
|
116
|
-
});
|
|
117
|
-
// Derivation only (absent for an address / literal-script destination).
|
|
118
|
-
const customInstructions = resolved.customInstructions
|
|
119
|
-
? JSON.stringify(resolved.customInstructions)
|
|
120
|
-
: undefined;
|
|
121
|
-
const description = authority
|
|
122
|
-
? 'Deploy Mandala token (authority)'
|
|
123
|
-
: 'Deploy Mandala token (fixed supply)';
|
|
124
|
-
const args = {
|
|
125
|
-
description,
|
|
126
|
-
outputs: [
|
|
127
|
-
{
|
|
128
|
-
lockingScript: deploy.lock().toHex(),
|
|
129
|
-
satoshis: 1,
|
|
130
|
-
outputDescription: 'Mandala deploy',
|
|
131
|
-
customInstructions,
|
|
132
|
-
},
|
|
133
|
-
],
|
|
134
|
-
labels: [MANDALA_LABEL],
|
|
135
|
-
options: {
|
|
136
|
-
randomizeOutputs: false,
|
|
137
|
-
...(input.overlay && { noSend: true }),
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
const created = await executeTrackedAction(ctx.wallet, args);
|
|
141
|
-
if (created.error)
|
|
142
|
-
return { error: created.error };
|
|
143
|
-
if (!created.txid || !created.tx)
|
|
144
|
-
return { error: 'deploy-no-tx' };
|
|
145
|
-
const txid = created.txid;
|
|
146
|
-
const tx = created.tx;
|
|
147
|
-
if (input.overlay) {
|
|
148
|
-
const steak = await new OverlayClient(input.overlay).submitBrc22(tx, [
|
|
149
|
-
MANDALA_TOPIC,
|
|
150
|
-
`tm_${txid}`,
|
|
151
|
-
]);
|
|
152
|
-
if (!steak || typeof steak !== 'object' || Array.isArray(steak)) {
|
|
153
|
-
return { txid, tx, error: 'overlay-no-steak' };
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
try {
|
|
157
|
-
await fileDeploy(ctx, txid, tx, customInstructions);
|
|
158
|
-
}
|
|
159
|
-
catch (error) {
|
|
160
|
-
return {
|
|
161
|
-
txid,
|
|
162
|
-
tx,
|
|
163
|
-
tokenId: `${txid}.0`,
|
|
164
|
-
error: `file-failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
return { txid, tx, tokenId: `${txid}.0` };
|
|
168
|
-
}
|
|
169
|
-
catch (error) {
|
|
170
|
-
return {
|
|
171
|
-
error: error instanceof Error ? error.message : 'unknown-error',
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
/**
|
|
177
|
-
* Re-run the filing step of {@link deployMandala} for a deploy that was
|
|
178
|
-
* created but not filed. The customInstructions are read back from the
|
|
179
|
-
* `mandala`-labelled action's vout 0 (`listActions`).
|
|
180
|
-
*/
|
|
181
|
-
export const fileMandalaDeploy = {
|
|
182
|
-
meta: {
|
|
183
|
-
name: 'fileMandalaDeploy',
|
|
184
|
-
description: 'File a created Mandala deploy output into its token basket (retry of the deploy internalize)',
|
|
185
|
-
category: 'tokens',
|
|
186
|
-
inputSchema: {
|
|
187
|
-
type: 'object',
|
|
188
|
-
properties: {
|
|
189
|
-
txid: { type: 'string', description: 'Deploy txid' },
|
|
190
|
-
tx: {
|
|
191
|
-
type: 'array',
|
|
192
|
-
description: 'Atomic BEEF of the deploy; fetched from services when omitted',
|
|
193
|
-
},
|
|
194
|
-
},
|
|
195
|
-
required: ['txid'],
|
|
196
|
-
},
|
|
197
|
-
},
|
|
198
|
-
async execute(ctx, input) {
|
|
199
|
-
try {
|
|
200
|
-
const txid = input.txid.toLowerCase();
|
|
201
|
-
const listed = await ctx.wallet.listActions({
|
|
202
|
-
labels: [MANDALA_LABEL],
|
|
203
|
-
includeOutputs: true,
|
|
204
|
-
limit: 10000,
|
|
205
|
-
});
|
|
206
|
-
const action = listed.actions.find((a) => a.txid === txid);
|
|
207
|
-
if (!action)
|
|
208
|
-
return { error: 'deploy-not-found' };
|
|
209
|
-
const out = action.outputs?.find((o) => o.outputIndex === 0);
|
|
210
|
-
let tx = input.tx;
|
|
211
|
-
if (!tx) {
|
|
212
|
-
if (!ctx.services)
|
|
213
|
-
return { error: 'services-required' };
|
|
214
|
-
tx = (await ctx.services.getBeefForTxid(txid)).toBinaryAtomic(txid);
|
|
215
|
-
}
|
|
216
|
-
await fileDeploy(ctx, txid, tx, out?.customInstructions);
|
|
217
|
-
return { txid, tokenId: `${txid}.0` };
|
|
218
|
-
}
|
|
219
|
-
catch (error) {
|
|
220
|
-
return {
|
|
221
|
-
error: error instanceof Error ? error.message : String(error),
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
};
|
|
226
|
-
//# sourceMappingURL=deploy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/mandala/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
import { afterEach, describe, expect, test } from 'bun:test';
|
|
2
|
-
import { Mandala } from '@1sat/templates';
|
|
3
|
-
import { MANDALA_DEPLOY_PROTOCOL, MANDALA_LABEL, MANDALA_TOPIC, mandalaProtocol, mandalaTokenBasket, mandalaTokenLabel, parseMandalaName, } from '@1sat/types';
|
|
4
|
-
import { LockingScript, MerklePath, P2PKH, PrivateKey, ProtoWallet, PublicKey, Transaction, UnlockingScript, } from '@bsv/sdk';
|
|
5
|
-
import { deployMandala, fileMandalaDeploy } from './deploy.js';
|
|
6
|
-
const proto = new ProtoWallet(PrivateKey.fromHex('01'.repeat(32)));
|
|
7
|
-
/** Fake wallet: createAction builds the outputs into a real tx; internalize is recorded. */
|
|
8
|
-
function setup() {
|
|
9
|
-
const created = [];
|
|
10
|
-
const internalized = [];
|
|
11
|
-
const wallet = {
|
|
12
|
-
getPublicKey: (a) => proto.getPublicKey(a),
|
|
13
|
-
createAction: async (args) => {
|
|
14
|
-
created.push(args);
|
|
15
|
-
const parent = new Transaction();
|
|
16
|
-
parent.addInput({
|
|
17
|
-
sourceTXID: '11'.repeat(32),
|
|
18
|
-
sourceOutputIndex: 0,
|
|
19
|
-
unlockingScript: new UnlockingScript(),
|
|
20
|
-
sequence: 0xffffffff,
|
|
21
|
-
});
|
|
22
|
-
parent.addOutput({
|
|
23
|
-
lockingScript: new P2PKH().lock(PrivateKey.fromHex('05'.repeat(32)).toPublicKey().toAddress()),
|
|
24
|
-
satoshis: 100_000,
|
|
25
|
-
});
|
|
26
|
-
parent.merklePath = new MerklePath(100, [
|
|
27
|
-
[{ offset: 0, hash: parent.id('hex'), txid: true }],
|
|
28
|
-
]);
|
|
29
|
-
const tx = new Transaction();
|
|
30
|
-
tx.addInput({
|
|
31
|
-
sourceTransaction: parent,
|
|
32
|
-
sourceOutputIndex: 0,
|
|
33
|
-
unlockingScript: new UnlockingScript(),
|
|
34
|
-
sequence: 0xffffffff,
|
|
35
|
-
});
|
|
36
|
-
for (const o of args.outputs ?? []) {
|
|
37
|
-
tx.addOutput({
|
|
38
|
-
lockingScript: LockingScript.fromHex(o.lockingScript),
|
|
39
|
-
satoshis: o.satoshis,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
return { txid: tx.id('hex'), tx: tx.toAtomicBEEF() };
|
|
43
|
-
},
|
|
44
|
-
internalizeAction: async (args) => {
|
|
45
|
-
internalized.push(args);
|
|
46
|
-
return { accepted: true };
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
const ctx = {
|
|
50
|
-
wallet: wallet,
|
|
51
|
-
chain: 'main',
|
|
52
|
-
isBaseWallet: true,
|
|
53
|
-
};
|
|
54
|
-
return { ctx, created, internalized };
|
|
55
|
-
}
|
|
56
|
-
/** The P2PKH the wallet derives under MANDALA_DEPLOY_PROTOCOL for this keyID. */
|
|
57
|
-
async function derivedLock(ci) {
|
|
58
|
-
const { publicKey } = await proto.getPublicKey({
|
|
59
|
-
protocolID: MANDALA_DEPLOY_PROTOCOL,
|
|
60
|
-
keyID: ci.keyID,
|
|
61
|
-
counterparty: 'self',
|
|
62
|
-
forSelf: true,
|
|
63
|
-
});
|
|
64
|
-
return new P2PKH().lock(PublicKey.fromString(publicKey).toAddress());
|
|
65
|
-
}
|
|
66
|
-
function expectFiling(created, internalized, txid) {
|
|
67
|
-
// one createAction: deploy at vout 0, label `mandala`, derivation-only CI
|
|
68
|
-
expect(created).toHaveLength(1);
|
|
69
|
-
expect(created[0].options?.randomizeOutputs).toBe(false);
|
|
70
|
-
expect(created[0].labels).toEqual([MANDALA_LABEL]);
|
|
71
|
-
expect(created[0].outputs).toHaveLength(1);
|
|
72
|
-
// untracked: an output cannot later be moved out of a basket
|
|
73
|
-
expect(created[0].outputs?.[0].basket).toBeUndefined();
|
|
74
|
-
const ci = JSON.parse(created[0].outputs?.[0].customInstructions ?? '{}');
|
|
75
|
-
expect(Object.keys(ci).sort()).toEqual(['keyID', 'protocolID']);
|
|
76
|
-
// deploy key: [2, 'mandala deploy'] (txid unknown at derivation time)
|
|
77
|
-
expect(ci.protocolID).toEqual([2, 'mandala deploy']);
|
|
78
|
-
expect(ci.keyID).toStartWith('mandala-deploy-');
|
|
79
|
-
// one internalizeAction on the same tx: vout 0 into the per-token basket
|
|
80
|
-
expect(internalized).toHaveLength(1);
|
|
81
|
-
const int = internalized[0];
|
|
82
|
-
expect(Transaction.fromAtomicBEEF(int.tx).id('hex')).toBe(txid);
|
|
83
|
-
expect(int.labels).toEqual([MANDALA_LABEL, `mandala ${txid} 0`]);
|
|
84
|
-
expect(int.labels).toContain(mandalaTokenLabel({ txid, vout: 0 }));
|
|
85
|
-
expect(int.outputs).toHaveLength(1);
|
|
86
|
-
expect(int.outputs[0].outputIndex).toBe(0);
|
|
87
|
-
expect(int.outputs[0].protocol).toBe('basket insertion');
|
|
88
|
-
const remit = int.outputs[0].insertionRemittance;
|
|
89
|
-
expect(remit?.basket).toBe(`mandala ${txid} 0`);
|
|
90
|
-
expect(remit?.basket).toBe(mandalaTokenBasket(`${txid}_0`));
|
|
91
|
-
expect(remit?.customInstructions).toBe(created[0].outputs?.[0].customInstructions);
|
|
92
|
-
return { ci, tx: Transaction.fromAtomicBEEF(int.tx) };
|
|
93
|
-
}
|
|
94
|
-
describe('deployMandala', () => {
|
|
95
|
-
test('fixed supply: createAction + internalize into the per-token basket, tokenId = txid', async () => {
|
|
96
|
-
const { ctx, created, internalized } = setup();
|
|
97
|
-
const res = await deployMandala.execute(ctx, {
|
|
98
|
-
amount: '21000000',
|
|
99
|
-
symbol: 'GOLD',
|
|
100
|
-
decimals: 8,
|
|
101
|
-
});
|
|
102
|
-
expect(res.error).toBeUndefined();
|
|
103
|
-
expect(res.txid).toMatch(/^[0-9a-f]{64}$/);
|
|
104
|
-
expect(res.tokenId).toBe(`${res.txid}.0`);
|
|
105
|
-
expect(res.tx).toBeDefined();
|
|
106
|
-
expect(created[0].options?.noSend).toBeUndefined();
|
|
107
|
-
const { ci, tx } = expectFiling(created, internalized, res.txid);
|
|
108
|
-
const expected = Mandala.deployValue(21000000n, {
|
|
109
|
-
lock: await derivedLock(ci),
|
|
110
|
-
payload: { sym: 'GOLD', dec: 8 },
|
|
111
|
-
});
|
|
112
|
-
expect(created[0].outputs?.[0].lockingScript).toBe(expected.lock().toHex());
|
|
113
|
-
const decoded = Mandala.decode(tx.outputs[0].lockingScript);
|
|
114
|
-
expect(decoded?.role).toBe('deploy');
|
|
115
|
-
expect(decoded?.amount).toBe(21000000n);
|
|
116
|
-
expect(decoded?.metadata).toEqual({ sym: 'GOLD', dec: 8 });
|
|
117
|
-
});
|
|
118
|
-
test('authority: amount 0 deploys the first authority, filed the same way', async () => {
|
|
119
|
-
const { ctx, created, internalized } = setup();
|
|
120
|
-
const res = await deployMandala.execute(ctx, {
|
|
121
|
-
amount: 0n,
|
|
122
|
-
symbol: 'STABLE',
|
|
123
|
-
decimals: 2,
|
|
124
|
-
icon: 1,
|
|
125
|
-
});
|
|
126
|
-
expect(res.error).toBeUndefined();
|
|
127
|
-
expect(res.tokenId).toBe(`${res.txid}.0`);
|
|
128
|
-
const { ci, tx } = expectFiling(created, internalized, res.txid);
|
|
129
|
-
const expected = Mandala.deployAuthority({
|
|
130
|
-
lock: await derivedLock(ci),
|
|
131
|
-
payload: { sym: 'STABLE', dec: 2, icon: 1 },
|
|
132
|
-
});
|
|
133
|
-
expect(created[0].outputs?.[0].lockingScript).toBe(expected.lock().toHex());
|
|
134
|
-
const decoded = Mandala.decode(tx.outputs[0].lockingScript);
|
|
135
|
-
expect(decoded?.role).toBe('deploy');
|
|
136
|
-
expect(decoded?.amount).toBe(0n);
|
|
137
|
-
});
|
|
138
|
-
test('an address destination carries no customInstructions', async () => {
|
|
139
|
-
const { ctx, created, internalized } = setup();
|
|
140
|
-
const res = await deployMandala.execute(ctx, {
|
|
141
|
-
amount: '5',
|
|
142
|
-
destination: {
|
|
143
|
-
address: PrivateKey.fromHex('06'.repeat(32)).toPublicKey().toAddress(),
|
|
144
|
-
},
|
|
145
|
-
});
|
|
146
|
-
expect(res.error).toBeUndefined();
|
|
147
|
-
expect(created[0].outputs?.[0].customInstructions).toBeUndefined();
|
|
148
|
-
expect(internalized[0].outputs[0].insertionRemittance?.customInstructions).toBeUndefined();
|
|
149
|
-
});
|
|
150
|
-
test('names: `mandala <txid> <vout>` from {txid, vout}, txid_vout or txid.vout', () => {
|
|
151
|
-
const txid = 'AB'.repeat(32);
|
|
152
|
-
const name = `mandala ${'ab'.repeat(32)} 3`;
|
|
153
|
-
for (const ref of [{ txid, vout: 3 }, `${txid}_3`, `${txid}.3`]) {
|
|
154
|
-
expect(mandalaTokenBasket(ref)).toBe(name);
|
|
155
|
-
expect(mandalaTokenLabel(ref)).toBe(name);
|
|
156
|
-
expect(mandalaProtocol(ref)).toEqual([2, name]);
|
|
157
|
-
}
|
|
158
|
-
expect(() => mandalaProtocol(txid)).toThrow();
|
|
159
|
-
});
|
|
160
|
-
test('parseMandalaName recovers {txid, vout} from basket, label or protocol', () => {
|
|
161
|
-
const txid = 'ab'.repeat(32);
|
|
162
|
-
expect(parseMandalaName(`mandala ${txid} 7`)).toEqual({ txid, vout: 7 });
|
|
163
|
-
expect(parseMandalaName([2, `mandala ${txid} 0`])).toEqual({
|
|
164
|
-
txid,
|
|
165
|
-
vout: 0,
|
|
166
|
-
});
|
|
167
|
-
expect(parseMandalaName('mandala')).toBeUndefined();
|
|
168
|
-
expect(parseMandalaName('mandala deploy')).toBeUndefined();
|
|
169
|
-
expect(parseMandalaName(`mandala ${txid}_0`)).toBeUndefined();
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
describe('deployMandala filing retry', () => {
|
|
173
|
-
test('a failed internalize returns txid/tx/error; fileMandalaDeploy re-files from listActions', async () => {
|
|
174
|
-
const { ctx, created, internalized } = setup();
|
|
175
|
-
const internalize = ctx.wallet.internalizeAction;
|
|
176
|
-
let fail = true;
|
|
177
|
-
ctx.wallet.internalizeAction = async (args) => {
|
|
178
|
-
if (fail)
|
|
179
|
-
throw new Error('storage busy');
|
|
180
|
-
return internalize(args);
|
|
181
|
-
};
|
|
182
|
-
const res = await deployMandala.execute(ctx, { amount: '7' });
|
|
183
|
-
expect(res.error).toBe('file-failed: storage busy');
|
|
184
|
-
expect(res.txid).toMatch(/^[0-9a-f]{64}$/);
|
|
185
|
-
expect(res.tokenId).toBe(`${res.txid}.0`);
|
|
186
|
-
expect(internalized).toHaveLength(0);
|
|
187
|
-
const ciString = created[0].outputs?.[0].customInstructions;
|
|
188
|
-
const listCalls = [];
|
|
189
|
-
ctx.wallet.listActions = async (args) => {
|
|
190
|
-
listCalls.push(args);
|
|
191
|
-
return {
|
|
192
|
-
totalActions: 1,
|
|
193
|
-
actions: [
|
|
194
|
-
{
|
|
195
|
-
txid: res.txid,
|
|
196
|
-
satoshis: 0,
|
|
197
|
-
status: 'completed',
|
|
198
|
-
isOutgoing: true,
|
|
199
|
-
description: 'Deploy Mandala token (fixed supply)',
|
|
200
|
-
labels: [MANDALA_LABEL],
|
|
201
|
-
version: 1,
|
|
202
|
-
lockTime: 0,
|
|
203
|
-
outputs: [
|
|
204
|
-
{
|
|
205
|
-
outputIndex: 0,
|
|
206
|
-
satoshis: 1,
|
|
207
|
-
spendable: true,
|
|
208
|
-
tags: [],
|
|
209
|
-
outputDescription: 'Mandala deploy',
|
|
210
|
-
basket: '',
|
|
211
|
-
customInstructions: ciString,
|
|
212
|
-
},
|
|
213
|
-
],
|
|
214
|
-
},
|
|
215
|
-
],
|
|
216
|
-
};
|
|
217
|
-
};
|
|
218
|
-
fail = false;
|
|
219
|
-
const filed = await fileMandalaDeploy.execute(ctx, {
|
|
220
|
-
txid: res.txid,
|
|
221
|
-
tx: res.tx,
|
|
222
|
-
});
|
|
223
|
-
expect(filed.error).toBeUndefined();
|
|
224
|
-
expect(filed.tokenId).toBe(`${res.txid}.0`);
|
|
225
|
-
expect(listCalls).toEqual([
|
|
226
|
-
{ labels: [MANDALA_LABEL], includeOutputs: true, limit: 10000 },
|
|
227
|
-
]);
|
|
228
|
-
expectFiling(created, internalized, res.txid);
|
|
229
|
-
});
|
|
230
|
-
test('fileMandalaDeploy: unknown txid', async () => {
|
|
231
|
-
const { ctx } = setup();
|
|
232
|
-
ctx.wallet.listActions = async () => ({ totalActions: 0, actions: [] });
|
|
233
|
-
const filed = await fileMandalaDeploy.execute(ctx, {
|
|
234
|
-
txid: 'cd'.repeat(32),
|
|
235
|
-
});
|
|
236
|
-
expect(filed.error).toBe('deploy-not-found');
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
describe('deployMandala overlay', () => {
|
|
240
|
-
const realFetch = globalThis.fetch;
|
|
241
|
-
afterEach(() => {
|
|
242
|
-
globalThis.fetch = realFetch;
|
|
243
|
-
});
|
|
244
|
-
test('creates with noSend and submits to tm_mandala and tm_<txid> before internalizing', async () => {
|
|
245
|
-
const order = [];
|
|
246
|
-
const submits = [];
|
|
247
|
-
globalThis.fetch = (async (url, init) => {
|
|
248
|
-
order.push('submit');
|
|
249
|
-
submits.push({
|
|
250
|
-
url: String(url),
|
|
251
|
-
topics: new Headers(init?.headers).get('x-topics'),
|
|
252
|
-
});
|
|
253
|
-
return new Response(JSON.stringify({
|
|
254
|
-
[MANDALA_TOPIC]: { outputsToAdmit: [0], coinsToRetain: [] },
|
|
255
|
-
}), { status: 200 });
|
|
256
|
-
});
|
|
257
|
-
const { ctx, created, internalized } = setup();
|
|
258
|
-
const internalize = ctx.wallet.internalizeAction;
|
|
259
|
-
ctx.wallet.internalizeAction = async (args) => {
|
|
260
|
-
order.push('internalize');
|
|
261
|
-
return internalize(args);
|
|
262
|
-
};
|
|
263
|
-
const res = await deployMandala.execute(ctx, {
|
|
264
|
-
amount: '1000',
|
|
265
|
-
symbol: 'OVL',
|
|
266
|
-
overlay: 'https://overlay.example/',
|
|
267
|
-
});
|
|
268
|
-
expect(res.error).toBeUndefined();
|
|
269
|
-
expect(res.tokenId).toBe(`${res.txid}.0`);
|
|
270
|
-
expect(created[0].options?.noSend).toBe(true);
|
|
271
|
-
expect(submits).toEqual([
|
|
272
|
-
{
|
|
273
|
-
url: 'https://overlay.example/submit',
|
|
274
|
-
topics: `${MANDALA_TOPIC},tm_${res.txid}`,
|
|
275
|
-
},
|
|
276
|
-
]);
|
|
277
|
-
expect(order).toEqual(['submit', 'internalize']);
|
|
278
|
-
expectFiling(created, internalized, res.txid);
|
|
279
|
-
});
|
|
280
|
-
});
|
|
281
|
-
//# sourceMappingURL=deploy.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.test.js","sourceRoot":"","sources":["../../src/mandala/deploy.test.ts"],"names":[],"mappings":"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"}
|
package/dist/mandala/index.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mandala (BRC-162) token actions: deploy, send to a BRC-169 handle
|
|
3
|
-
* (delivered per BRC-232), and receive from `mandala_inbox`.
|
|
4
|
-
*/
|
|
5
|
-
export * from './deploy.js';
|
|
6
|
-
export * from './send.js';
|
|
7
|
-
export * from './receive.js';
|
|
8
|
-
export declare const mandalaActions: (import("../types.js").Action<import("./deploy.js").DeployMandalaInput, import("./deploy.js").DeployMandalaResponse> | import("../types.js").Action<import("./deploy.js").FileMandalaDeployInput, import("./deploy.js").FileMandalaDeployResponse> | import("../types.js").Action<import("./receive.js").SyncMandalaInboxInput, import("./receive.js").SyncMandalaInboxResult> | import("../types.js").Action<import("./send.js").SendMandalaInput, import("./send.js").SendMandalaResult>)[];
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/mandala/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mandala (BRC-162) token actions: deploy, send to a BRC-169 handle
|
|
3
|
-
* (delivered per BRC-232), and receive from `mandala_inbox`.
|
|
4
|
-
*/
|
|
5
|
-
import { deployMandala, fileMandalaDeploy } from './deploy.js';
|
|
6
|
-
import { syncMandalaInbox } from './receive.js';
|
|
7
|
-
import { sendMandala } from './send.js';
|
|
8
|
-
export * from './deploy.js';
|
|
9
|
-
export * from './send.js';
|
|
10
|
-
export * from './receive.js';
|
|
11
|
-
export const mandalaActions = [
|
|
12
|
-
deployMandala,
|
|
13
|
-
fileMandalaDeploy,
|
|
14
|
-
sendMandala,
|
|
15
|
-
syncMandalaInbox,
|
|
16
|
-
];
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mandala/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAE5B,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,aAAa;IACb,iBAAiB;IACjB,WAAW;IACX,gBAAgB;CAChB,CAAA"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Collect BRC-232 transaction deliveries from the wallet's `mandala_inbox`.
|
|
3
|
-
*
|
|
4
|
-
* For each message listed (BRC-231 over BRC-104): decode the BRC-169 §7.3
|
|
5
|
-
* DAG-CBOR envelope, verify its §7.2 signature against `sender.identityKey`,
|
|
6
|
-
* decrypt the BRC-78 `content` with `wallet.decrypt`, check `contentHash`,
|
|
7
|
-
* parse the MIME entity, require `application/vnd.metanet.transaction+cbor`,
|
|
8
|
-
* decode the DAG-CBOR body and internalize its outputs:
|
|
9
|
-
*
|
|
10
|
-
* - `wallet payment` → `paymentRemittance { derivationPrefix,
|
|
11
|
-
* derivationSuffix, senderIdentityKey }`;
|
|
12
|
-
* - `basket insertion` under a `mandala <txid> <vout>` protocol → basket
|
|
13
|
-
* `mandala <txid> <vout>`, customInstructions = the derivation triple as given,
|
|
14
|
-
* labels `mandala` and `mandala <txid> <vout>`, after checking that the output's
|
|
15
|
-
* script names that token.
|
|
16
|
-
*
|
|
17
|
-
* A message is internalized whole or not at all, and acknowledged only after
|
|
18
|
-
* its internalize succeeds. Anything else (an unknown content type or
|
|
19
|
-
* protocolID, a token id mismatch, a bad signature, …) leaves the message
|
|
20
|
-
* unacknowledged and is reported. SPV is `internalizeAction`'s.
|
|
21
|
-
*/
|
|
22
|
-
import { type WalletInterface } from '@bsv/sdk';
|
|
23
|
-
import { type InboxSkip } from '../metanet/inbox.js';
|
|
24
|
-
import type { Action } from '../types.js';
|
|
25
|
-
export interface SyncMandalaInboxInput {
|
|
26
|
-
/** MessageBox server URL (default: "https://messagebox.1sat.app") */
|
|
27
|
-
messageboxUrl?: string;
|
|
28
|
-
}
|
|
29
|
-
/** A message left in the box, and why. */
|
|
30
|
-
export type MandalaInboxSkip = InboxSkip;
|
|
31
|
-
/** A message internalized and acknowledged. */
|
|
32
|
-
export interface MandalaInboxReceipt {
|
|
33
|
-
messageId: string;
|
|
34
|
-
txid: string;
|
|
35
|
-
/** Tokens (BRC-36 deploy outpoints `<txid>.<vout>`) of the Mandala outputs received */
|
|
36
|
-
tokenIds: string[];
|
|
37
|
-
}
|
|
38
|
-
export interface SyncMandalaInboxResult {
|
|
39
|
-
received: MandalaInboxReceipt[];
|
|
40
|
-
/** Messages left unacknowledged */
|
|
41
|
-
skipped: MandalaInboxSkip[];
|
|
42
|
-
error?: string;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Internalize one BRC-232 delivery (the DAG-CBOR body of an
|
|
46
|
-
* `application/vnd.metanet.transaction+cbor` MIME entity), whole or not at
|
|
47
|
-
* all.
|
|
48
|
-
*
|
|
49
|
-
* @throws InboxSkipError when the body is malformed, names an unknown
|
|
50
|
-
* protocol or protocolID, or a token protocolID does not match the script;
|
|
51
|
-
* the internalize error when the wallet refuses it
|
|
52
|
-
*/
|
|
53
|
-
export declare function internalizeTransactionDelivery(wallet: Pick<WalletInterface, 'internalizeAction'>, body: Uint8Array): Promise<{
|
|
54
|
-
txid: string;
|
|
55
|
-
tokenIds: string[];
|
|
56
|
-
}>;
|
|
57
|
-
export declare const syncMandalaInbox: Action<SyncMandalaInboxInput, SyncMandalaInboxResult>;
|
|
58
|
-
//# sourceMappingURL=receive.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../src/mandala/receive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,OAAO,EAGN,KAAK,eAAe,EAEpB,MAAM,UAAU,CAAA;AAEjB,OAAO,EACN,KAAK,SAAS,EAId,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,WAAW,qBAAqB;IACrC,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,0CAA0C;AAC1C,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAA;AAExC,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,uFAAuF;IACvF,QAAQ,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;IAC/B,mCAAmC;IACnC,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAyHD;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CACnD,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,EAClD,IAAI,EAAE,UAAU,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAW/C;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACpC,qBAAqB,EACrB,sBAAsB,CAqCtB,CAAA"}
|