@projectsolo/solo-mission-mcp 0.21.13 → 0.22.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/DEVELOPER_README.md +1 -1
- package/README.md +96 -12
- package/dist/chunk-NUGGTARW.js +196 -0
- package/dist/{chunk-TKRT2V2W.js → chunk-OP4QYTL4.js} +5 -0
- package/dist/{client-LDWK5HLP.js → client-NS6J6IO2.js} +1 -1
- package/dist/deployment-UCUWVIPJ.js +43 -0
- package/dist/escrowErrors-4XSAYLGT.js +56 -0
- package/dist/index.js +244 -162
- package/dist/verify-7EUVRUAS.js +445 -0
- package/dist/{wallet-V4T4NTCM.js → wallet-LX7SI5RE.js} +28 -14
- package/dist/wire-RLDY4AJR.js +24 -0
- package/package.json +1 -1
- package/src/config.ts +11 -0
- package/src/index.ts +1 -1
- package/src/scripts/check-tools-against-spec.ts +3 -3
- package/src/solana/deployment.test.ts +61 -0
- package/src/solana/deployment.ts +89 -0
- package/src/solana/escrowErrors.ts +78 -0
- package/src/solana/fixtures/config-account.json +6 -0
- package/src/solana/fixtures/funding-transaction-v2-lottery.json +49 -0
- package/src/solana/fixtures/funding-transaction-v2-plain.json +46 -0
- package/src/solana/fixtures/solo_escrow.v2.idl-excerpt.json +683 -0
- package/src/solana/verify.test.ts +605 -78
- package/src/solana/verify.ts +545 -84
- package/src/solana/wallet.test.ts +85 -2
- package/src/solana/wallet.ts +74 -31
- package/src/solana/wire.test.ts +129 -0
- package/src/solana/wire.ts +264 -0
- package/src/tools/missions.ts +56 -119
- package/src/tools/solana.test.ts +356 -0
- package/src/tools/solana.ts +309 -70
- package/src/tools/tracks.ts +1 -1
- package/dist/verify-KAETIGV5.js +0 -136
- /package/src/solana/fixtures/{funding-transaction.json → funding-transaction-v1.json} +0 -0
|
@@ -0,0 +1,683 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_source": "ProjectSoloAI/solo-escrow-solana u1.1.0 (main 4376bace61797a1edebc8d001f74e6a1f1c7bac4) idl/solo_escrow.json, trimmed with jq to the parts the MCP verifier depends on",
|
|
3
|
+
"address": "2CPC5V63FDs7SdWu89iSYYsTEpqBwuQeYuA9ASzuSo8a",
|
|
4
|
+
"metadata": {
|
|
5
|
+
"name": "solo_escrow",
|
|
6
|
+
"version": "0.0.0",
|
|
7
|
+
"spec": "0.1.0",
|
|
8
|
+
"description": "Anchor port of EscrowVault.sol"
|
|
9
|
+
},
|
|
10
|
+
"instructions": [
|
|
11
|
+
{
|
|
12
|
+
"name": "cancel_task",
|
|
13
|
+
"docs": [
|
|
14
|
+
"`R-E5`, `R-H3`, `R-J1`, `R-A5`, `R-K1`, `R-K4`, SE-07(a).",
|
|
15
|
+
"",
|
|
16
|
+
"Cancellation before qualification returns the **full** budget with no fee (`R-H3`). Sponsor",
|
|
17
|
+
"authority is checked against the stored `task.sponsor`, never a caller-supplied field.",
|
|
18
|
+
"It closes at the qualification deadline: after that the participants' work is done, and a",
|
|
19
|
+
"sponsor must not be able to front-run the Operator's finalize to walk away with it."
|
|
20
|
+
],
|
|
21
|
+
"discriminator": [
|
|
22
|
+
69,
|
|
23
|
+
228,
|
|
24
|
+
134,
|
|
25
|
+
187,
|
|
26
|
+
134,
|
|
27
|
+
105,
|
|
28
|
+
238,
|
|
29
|
+
48
|
|
30
|
+
],
|
|
31
|
+
"accounts": [
|
|
32
|
+
{
|
|
33
|
+
"name": "sponsor",
|
|
34
|
+
"signer": true
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "config",
|
|
38
|
+
"pda": {
|
|
39
|
+
"seeds": [
|
|
40
|
+
{
|
|
41
|
+
"kind": "const",
|
|
42
|
+
"value": [
|
|
43
|
+
99,
|
|
44
|
+
111,
|
|
45
|
+
110,
|
|
46
|
+
102,
|
|
47
|
+
105,
|
|
48
|
+
103
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "task",
|
|
56
|
+
"writable": true,
|
|
57
|
+
"pda": {
|
|
58
|
+
"seeds": [
|
|
59
|
+
{
|
|
60
|
+
"kind": "const",
|
|
61
|
+
"value": [
|
|
62
|
+
116,
|
|
63
|
+
97,
|
|
64
|
+
115,
|
|
65
|
+
107
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"kind": "account",
|
|
70
|
+
"path": "task.task_id",
|
|
71
|
+
"account": "Task"
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "vault",
|
|
78
|
+
"writable": true,
|
|
79
|
+
"pda": {
|
|
80
|
+
"seeds": [
|
|
81
|
+
{
|
|
82
|
+
"kind": "const",
|
|
83
|
+
"value": [
|
|
84
|
+
118,
|
|
85
|
+
97,
|
|
86
|
+
117,
|
|
87
|
+
108,
|
|
88
|
+
116
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"kind": "account",
|
|
93
|
+
"path": "task.task_id",
|
|
94
|
+
"account": "Task"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "sponsor_token_account",
|
|
101
|
+
"docs": [
|
|
102
|
+
"`R-K4` — non-default recipient, and it must belong to the stored sponsor."
|
|
103
|
+
],
|
|
104
|
+
"writable": true
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "token_program",
|
|
108
|
+
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"name": "event_authority"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "program"
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"args": []
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"name": "claim_refund",
|
|
121
|
+
"docs": [
|
|
122
|
+
"`R-J3`, `R-A5`, `R-K1`, `R-K4`. Exactly the refundable amount, exactly once, to a non-zero",
|
|
123
|
+
"recipient owned by the stored sponsor."
|
|
124
|
+
],
|
|
125
|
+
"discriminator": [
|
|
126
|
+
15,
|
|
127
|
+
16,
|
|
128
|
+
30,
|
|
129
|
+
161,
|
|
130
|
+
255,
|
|
131
|
+
228,
|
|
132
|
+
97,
|
|
133
|
+
60
|
|
134
|
+
],
|
|
135
|
+
"accounts": [
|
|
136
|
+
{
|
|
137
|
+
"name": "sponsor",
|
|
138
|
+
"signer": true
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "config",
|
|
142
|
+
"pda": {
|
|
143
|
+
"seeds": [
|
|
144
|
+
{
|
|
145
|
+
"kind": "const",
|
|
146
|
+
"value": [
|
|
147
|
+
99,
|
|
148
|
+
111,
|
|
149
|
+
110,
|
|
150
|
+
102,
|
|
151
|
+
105,
|
|
152
|
+
103
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"name": "task",
|
|
160
|
+
"writable": true,
|
|
161
|
+
"pda": {
|
|
162
|
+
"seeds": [
|
|
163
|
+
{
|
|
164
|
+
"kind": "const",
|
|
165
|
+
"value": [
|
|
166
|
+
116,
|
|
167
|
+
97,
|
|
168
|
+
115,
|
|
169
|
+
107
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"kind": "account",
|
|
174
|
+
"path": "task.task_id",
|
|
175
|
+
"account": "Task"
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"name": "vault",
|
|
182
|
+
"writable": true,
|
|
183
|
+
"pda": {
|
|
184
|
+
"seeds": [
|
|
185
|
+
{
|
|
186
|
+
"kind": "const",
|
|
187
|
+
"value": [
|
|
188
|
+
118,
|
|
189
|
+
97,
|
|
190
|
+
117,
|
|
191
|
+
108,
|
|
192
|
+
116
|
|
193
|
+
]
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"kind": "account",
|
|
197
|
+
"path": "task.task_id",
|
|
198
|
+
"account": "Task"
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"name": "sponsor_token_account",
|
|
205
|
+
"docs": [
|
|
206
|
+
"`R-K4` — non-default recipient, and it must belong to the stored sponsor."
|
|
207
|
+
],
|
|
208
|
+
"writable": true
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"name": "token_program",
|
|
212
|
+
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"name": "event_authority"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"name": "program"
|
|
219
|
+
}
|
|
220
|
+
],
|
|
221
|
+
"args": []
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"name": "create_task",
|
|
225
|
+
"docs": [
|
|
226
|
+
"`R-B3`, `R-C1`, `R-C2`, `R-D1`, `R-E1`, `R-E2`, `R-G1`, `R-H1`, `R-K1`, `R-K5`, SE-02,",
|
|
227
|
+
"SE-07, N-2, N-3, N-4.",
|
|
228
|
+
"",
|
|
229
|
+
"The sponsor escrows the entire budget here; no obligation exists before the funds land",
|
|
230
|
+
"(`R-C1`). The sponsor also funds the Task and vault rent and is recorded as the",
|
|
231
|
+
"`rent_refund_recipient` — freeze §09, and Winston's review §1 on why that must be stored",
|
|
232
|
+
"rather than supplied at close.",
|
|
233
|
+
"",
|
|
234
|
+
"Non-lottery creation stays permissionless. A lottery task (`lottery_winner_count > 0`) must",
|
|
235
|
+
"be co-signed by the configured Operator, which binds its seed commitment to the platform",
|
|
236
|
+
"that has to reveal it (SE-02)."
|
|
237
|
+
],
|
|
238
|
+
"discriminator": [
|
|
239
|
+
194,
|
|
240
|
+
80,
|
|
241
|
+
6,
|
|
242
|
+
180,
|
|
243
|
+
232,
|
|
244
|
+
127,
|
|
245
|
+
48,
|
|
246
|
+
171
|
|
247
|
+
],
|
|
248
|
+
"accounts": [
|
|
249
|
+
{
|
|
250
|
+
"name": "sponsor",
|
|
251
|
+
"writable": true,
|
|
252
|
+
"signer": true
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"name": "config",
|
|
256
|
+
"writable": true,
|
|
257
|
+
"pda": {
|
|
258
|
+
"seeds": [
|
|
259
|
+
{
|
|
260
|
+
"kind": "const",
|
|
261
|
+
"value": [
|
|
262
|
+
99,
|
|
263
|
+
111,
|
|
264
|
+
110,
|
|
265
|
+
102,
|
|
266
|
+
105,
|
|
267
|
+
103
|
|
268
|
+
]
|
|
269
|
+
}
|
|
270
|
+
]
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"name": "whitelist",
|
|
275
|
+
"docs": [
|
|
276
|
+
"`R-C4` — the whitelist gates creation. Requiring the account here is exactly the gate; no",
|
|
277
|
+
"downstream instruction may require it."
|
|
278
|
+
],
|
|
279
|
+
"pda": {
|
|
280
|
+
"seeds": [
|
|
281
|
+
{
|
|
282
|
+
"kind": "const",
|
|
283
|
+
"value": [
|
|
284
|
+
119,
|
|
285
|
+
104,
|
|
286
|
+
105,
|
|
287
|
+
116,
|
|
288
|
+
101,
|
|
289
|
+
108,
|
|
290
|
+
105,
|
|
291
|
+
115,
|
|
292
|
+
116
|
|
293
|
+
]
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"kind": "account",
|
|
297
|
+
"path": "mint"
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"name": "mint"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"name": "task",
|
|
307
|
+
"docs": [
|
|
308
|
+
"Seeded by the counter, so `R-B3` holds without consulting an archive."
|
|
309
|
+
],
|
|
310
|
+
"writable": true,
|
|
311
|
+
"pda": {
|
|
312
|
+
"seeds": [
|
|
313
|
+
{
|
|
314
|
+
"kind": "const",
|
|
315
|
+
"value": [
|
|
316
|
+
116,
|
|
317
|
+
97,
|
|
318
|
+
115,
|
|
319
|
+
107
|
|
320
|
+
]
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"kind": "account",
|
|
324
|
+
"path": "config.task_counter",
|
|
325
|
+
"account": "Config"
|
|
326
|
+
}
|
|
327
|
+
]
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"name": "vault",
|
|
332
|
+
"docs": [
|
|
333
|
+
"Per-task escrow custody. Authority is the Task PDA, so no key can move it (`R-K3`).",
|
|
334
|
+
"Closed by `close_task` and its rent returned to `task.rent_refund_recipient` (freeze §08)."
|
|
335
|
+
],
|
|
336
|
+
"writable": true,
|
|
337
|
+
"pda": {
|
|
338
|
+
"seeds": [
|
|
339
|
+
{
|
|
340
|
+
"kind": "const",
|
|
341
|
+
"value": [
|
|
342
|
+
118,
|
|
343
|
+
97,
|
|
344
|
+
117,
|
|
345
|
+
108,
|
|
346
|
+
116
|
|
347
|
+
]
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"kind": "account",
|
|
351
|
+
"path": "config.task_counter",
|
|
352
|
+
"account": "Config"
|
|
353
|
+
}
|
|
354
|
+
]
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "sponsor_token_account",
|
|
359
|
+
"writable": true
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"name": "token_program",
|
|
363
|
+
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"name": "system_program",
|
|
367
|
+
"address": "11111111111111111111111111111111"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"name": "operator",
|
|
371
|
+
"docs": [
|
|
372
|
+
"SE-02 — required, and must be `Config.operator`, when `lottery_winner_count > 0`; ignored",
|
|
373
|
+
"otherwise. Pass the program id (Anchor's `None` sentinel) to omit it."
|
|
374
|
+
],
|
|
375
|
+
"signer": true,
|
|
376
|
+
"optional": true
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"name": "event_authority"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"name": "program"
|
|
383
|
+
}
|
|
384
|
+
],
|
|
385
|
+
"args": [
|
|
386
|
+
{
|
|
387
|
+
"name": "budget",
|
|
388
|
+
"type": "u64"
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"name": "base_pool",
|
|
392
|
+
"type": "u64"
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"name": "lottery_winner_count",
|
|
396
|
+
"type": "u32"
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"name": "lottery_prize_per_winner",
|
|
400
|
+
"type": "u64"
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"name": "qualify_deadline",
|
|
404
|
+
"type": "i64"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"name": "settlement_deadline",
|
|
408
|
+
"type": "i64"
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"name": "seed_commit",
|
|
412
|
+
"type": {
|
|
413
|
+
"array": [
|
|
414
|
+
"u8",
|
|
415
|
+
32
|
|
416
|
+
]
|
|
417
|
+
}
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"name": "max_fee_bps",
|
|
421
|
+
"type": "u16"
|
|
422
|
+
}
|
|
423
|
+
]
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"name": "emergency_refund",
|
|
427
|
+
"docs": [
|
|
428
|
+
"`R-E6`, `R-H3`, `R-J2`. Reachable from `Funded` or `Qualified`, only strictly after the",
|
|
429
|
+
"settlement deadline — so a stalled operator, or a silent randomness oracle, can never trap",
|
|
430
|
+
"the budget. Freeze §07 leans on this as the escape hatch for the oracle dependency."
|
|
431
|
+
],
|
|
432
|
+
"discriminator": [
|
|
433
|
+
188,
|
|
434
|
+
73,
|
|
435
|
+
52,
|
|
436
|
+
195,
|
|
437
|
+
137,
|
|
438
|
+
70,
|
|
439
|
+
180,
|
|
440
|
+
147
|
|
441
|
+
],
|
|
442
|
+
"accounts": [
|
|
443
|
+
{
|
|
444
|
+
"name": "sponsor",
|
|
445
|
+
"signer": true
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"name": "config",
|
|
449
|
+
"pda": {
|
|
450
|
+
"seeds": [
|
|
451
|
+
{
|
|
452
|
+
"kind": "const",
|
|
453
|
+
"value": [
|
|
454
|
+
99,
|
|
455
|
+
111,
|
|
456
|
+
110,
|
|
457
|
+
102,
|
|
458
|
+
105,
|
|
459
|
+
103
|
|
460
|
+
]
|
|
461
|
+
}
|
|
462
|
+
]
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"name": "task",
|
|
467
|
+
"writable": true,
|
|
468
|
+
"pda": {
|
|
469
|
+
"seeds": [
|
|
470
|
+
{
|
|
471
|
+
"kind": "const",
|
|
472
|
+
"value": [
|
|
473
|
+
116,
|
|
474
|
+
97,
|
|
475
|
+
115,
|
|
476
|
+
107
|
|
477
|
+
]
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"kind": "account",
|
|
481
|
+
"path": "task.task_id",
|
|
482
|
+
"account": "Task"
|
|
483
|
+
}
|
|
484
|
+
]
|
|
485
|
+
}
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"name": "vault",
|
|
489
|
+
"writable": true,
|
|
490
|
+
"pda": {
|
|
491
|
+
"seeds": [
|
|
492
|
+
{
|
|
493
|
+
"kind": "const",
|
|
494
|
+
"value": [
|
|
495
|
+
118,
|
|
496
|
+
97,
|
|
497
|
+
117,
|
|
498
|
+
108,
|
|
499
|
+
116
|
|
500
|
+
]
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"kind": "account",
|
|
504
|
+
"path": "task.task_id",
|
|
505
|
+
"account": "Task"
|
|
506
|
+
}
|
|
507
|
+
]
|
|
508
|
+
}
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
"name": "sponsor_token_account",
|
|
512
|
+
"docs": [
|
|
513
|
+
"`R-K4` — non-default recipient, and it must belong to the stored sponsor."
|
|
514
|
+
],
|
|
515
|
+
"writable": true
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"name": "token_program",
|
|
519
|
+
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"name": "event_authority"
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"name": "program"
|
|
526
|
+
}
|
|
527
|
+
],
|
|
528
|
+
"args": []
|
|
529
|
+
}
|
|
530
|
+
],
|
|
531
|
+
"accounts": [
|
|
532
|
+
{
|
|
533
|
+
"name": "Config",
|
|
534
|
+
"discriminator": [
|
|
535
|
+
155,
|
|
536
|
+
12,
|
|
537
|
+
170,
|
|
538
|
+
224,
|
|
539
|
+
30,
|
|
540
|
+
250,
|
|
541
|
+
204,
|
|
542
|
+
130
|
|
543
|
+
]
|
|
544
|
+
}
|
|
545
|
+
],
|
|
546
|
+
"types": [
|
|
547
|
+
{
|
|
548
|
+
"name": "Config",
|
|
549
|
+
"docs": [
|
|
550
|
+
"Singleton. Seeds: `[\"config\"]`.",
|
|
551
|
+
"",
|
|
552
|
+
"Replaces the reference's role registry, fee rate, treasury, pause flag and review window.",
|
|
553
|
+
"Satisfies `R-A1`–`R-A8`, `R-H1`–`R-H2`, `R-I4`."
|
|
554
|
+
],
|
|
555
|
+
"type": {
|
|
556
|
+
"kind": "struct",
|
|
557
|
+
"fields": [
|
|
558
|
+
{
|
|
559
|
+
"name": "admin",
|
|
560
|
+
"type": "pubkey"
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"name": "operator",
|
|
564
|
+
"type": "pubkey"
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"name": "guardian",
|
|
568
|
+
"type": "pubkey"
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"name": "treasury",
|
|
572
|
+
"type": "pubkey"
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
"name": "fee_bps",
|
|
576
|
+
"docs": [
|
|
577
|
+
"Fee applied to tasks created from now on. `R-H1` freezes it per task at creation."
|
|
578
|
+
],
|
|
579
|
+
"type": "u16"
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
"name": "min_review_window",
|
|
583
|
+
"docs": [
|
|
584
|
+
"Configurable minimum review window, itself floored by `MIN_REVIEW_WINDOW_FLOOR` (`R-I4`)."
|
|
585
|
+
],
|
|
586
|
+
"type": "i64"
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
"name": "paused",
|
|
590
|
+
"docs": [
|
|
591
|
+
"`R-K1`. Guardian sets, Admin clears (`R-A8`)."
|
|
592
|
+
],
|
|
593
|
+
"type": "bool"
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
"name": "task_counter",
|
|
597
|
+
"docs": [
|
|
598
|
+
"Monotonic source of `task_id`. Freeze §08 — makes `R-B3`'s forever-uniqueness structural,",
|
|
599
|
+
"so no tombstone lookup is needed at creation and the Task PDA can be archived rather than",
|
|
600
|
+
"consulted."
|
|
601
|
+
],
|
|
602
|
+
"type": "u64"
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
"name": "bump",
|
|
606
|
+
"type": "u8"
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
"name": "pending_role",
|
|
610
|
+
"docs": [
|
|
611
|
+
"SE-08 — the single pending role change, taken from `CONFIG_RESERVE`. None is pending",
|
|
612
|
+
"while `pending_incoming` is the default key (`R-A7` forbids proposing it), so a legacy",
|
|
613
|
+
"account's zeroed reserve reads as \"nothing pending\" and fails safe (N-7)."
|
|
614
|
+
],
|
|
615
|
+
"type": {
|
|
616
|
+
"defined": {
|
|
617
|
+
"name": "Role"
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"name": "pending_incoming",
|
|
623
|
+
"type": "pubkey"
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"name": "pending_effective_at",
|
|
627
|
+
"docs": [
|
|
628
|
+
"Earliest `unix_timestamp` at which `pending_incoming` may accept."
|
|
629
|
+
],
|
|
630
|
+
"type": "i64"
|
|
631
|
+
}
|
|
632
|
+
]
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
],
|
|
636
|
+
"errors": [
|
|
637
|
+
{
|
|
638
|
+
"code": 6012,
|
|
639
|
+
"name": "SettlementWindowTooShort",
|
|
640
|
+
"msg": "R-E2: settlement deadline does not leave the minimum window"
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
"code": 6016,
|
|
644
|
+
"name": "TooEarlyForEmergencyRefund",
|
|
645
|
+
"msg": "R-E6: emergency refund requires the settlement deadline to have passed"
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"code": 6026,
|
|
649
|
+
"name": "RefundAlreadyClaimed",
|
|
650
|
+
"msg": "R-J3: the refundable amount has already been claimed"
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"code": 6027,
|
|
654
|
+
"name": "NothingToRefund",
|
|
655
|
+
"msg": "R-J3: there is nothing to refund"
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
"code": 6124,
|
|
659
|
+
"name": "LotteryRequiresOperator",
|
|
660
|
+
"msg": "SE-02: a lottery task must be co-signed by the configured Operator"
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
"code": 6125,
|
|
664
|
+
"name": "TooLateToCancel",
|
|
665
|
+
"msg": "SE-07: cancellation closes at the qualification deadline"
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"code": 6132,
|
|
669
|
+
"name": "FeeAboveSponsorMax",
|
|
670
|
+
"msg": "N-2: the current fee rate exceeds the sponsor's maximum"
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
"code": 6133,
|
|
674
|
+
"name": "QualifyDeadlineTooFar",
|
|
675
|
+
"msg": "N-3: qualification deadline is beyond the maximum horizon"
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
"code": 6134,
|
|
679
|
+
"name": "SettlementDeadlineTooFar",
|
|
680
|
+
"msg": "N-3: settlement deadline is beyond the maximum settlement window"
|
|
681
|
+
}
|
|
682
|
+
]
|
|
683
|
+
}
|