@atlas-world/cli 1.0.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/README.md +72 -0
- package/dist/client.js +15 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/admin.js +56 -0
- package/dist/commands/admin.js.map +1 -0
- package/dist/commands/collect.js +37 -0
- package/dist/commands/collect.js.map +1 -0
- package/dist/commands/createWorld.js +159 -0
- package/dist/commands/createWorld.js.map +1 -0
- package/dist/commands/init.js +98 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/leaderboard.js +36 -0
- package/dist/commands/leaderboard.js.map +1 -0
- package/dist/commands/mintPlayer.js +44 -0
- package/dist/commands/mintPlayer.js.map +1 -0
- package/dist/commands/status.js +57 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config.js +92 -0
- package/dist/config.js.map +1 -0
- package/dist/idl.json +2311 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/package.json +50 -0
package/dist/idl.json
ADDED
|
@@ -0,0 +1,2311 @@
|
|
|
1
|
+
{
|
|
2
|
+
"address": "6byM2kmNLLGcrjRcq7ETVvGpxKgoEQuAof44SXe1vEee",
|
|
3
|
+
"metadata": {
|
|
4
|
+
"name": "atlas",
|
|
5
|
+
"version": "0.3.0",
|
|
6
|
+
"spec": "0.1.0",
|
|
7
|
+
"description": "Atlas World Protocol — Persistent World SDK for Solana"
|
|
8
|
+
},
|
|
9
|
+
"instructions": [
|
|
10
|
+
{
|
|
11
|
+
"name": "add_to_whitelist",
|
|
12
|
+
"discriminator": [
|
|
13
|
+
157,
|
|
14
|
+
211,
|
|
15
|
+
52,
|
|
16
|
+
54,
|
|
17
|
+
144,
|
|
18
|
+
81,
|
|
19
|
+
5,
|
|
20
|
+
55
|
|
21
|
+
],
|
|
22
|
+
"accounts": [
|
|
23
|
+
{
|
|
24
|
+
"name": "world_config",
|
|
25
|
+
"pda": {
|
|
26
|
+
"seeds": [
|
|
27
|
+
{
|
|
28
|
+
"kind": "const",
|
|
29
|
+
"value": [
|
|
30
|
+
119,
|
|
31
|
+
111,
|
|
32
|
+
114,
|
|
33
|
+
108,
|
|
34
|
+
100,
|
|
35
|
+
95,
|
|
36
|
+
99,
|
|
37
|
+
111,
|
|
38
|
+
110,
|
|
39
|
+
102,
|
|
40
|
+
105,
|
|
41
|
+
103
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"kind": "account",
|
|
46
|
+
"path": "world_config.world_id",
|
|
47
|
+
"account": "WorldConfig"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "whitelist",
|
|
54
|
+
"writable": true,
|
|
55
|
+
"pda": {
|
|
56
|
+
"seeds": [
|
|
57
|
+
{
|
|
58
|
+
"kind": "const",
|
|
59
|
+
"value": [
|
|
60
|
+
119,
|
|
61
|
+
104,
|
|
62
|
+
105,
|
|
63
|
+
116,
|
|
64
|
+
101,
|
|
65
|
+
108,
|
|
66
|
+
105,
|
|
67
|
+
115,
|
|
68
|
+
116
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"kind": "account",
|
|
73
|
+
"path": "world_config.world_id",
|
|
74
|
+
"account": "WorldConfig"
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "authority",
|
|
81
|
+
"signer": true
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"args": [
|
|
85
|
+
{
|
|
86
|
+
"name": "member",
|
|
87
|
+
"type": "pubkey"
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "admin_set_world_count",
|
|
93
|
+
"docs": [
|
|
94
|
+
"⚠️ SOLO PARA DESARROLLO — ajusta world_count manualmente.",
|
|
95
|
+
"",
|
|
96
|
+
"Uso: después de close_protocol + initialize_protocol, world_count",
|
|
97
|
+
"vuelve a 0, pero las cuentas WorldConfig de mundos creados antes",
|
|
98
|
+
"de la migración siguen existiendo en sus PDAs originales. Esta",
|
|
99
|
+
"instrucción evita colisiones al crear mundos nuevos, saltando",
|
|
100
|
+
"el contador por encima del último world_id usado.",
|
|
101
|
+
"",
|
|
102
|
+
"NO debe existir en el contrato final de mainnet."
|
|
103
|
+
],
|
|
104
|
+
"discriminator": [
|
|
105
|
+
240,
|
|
106
|
+
102,
|
|
107
|
+
102,
|
|
108
|
+
50,
|
|
109
|
+
155,
|
|
110
|
+
166,
|
|
111
|
+
55,
|
|
112
|
+
203
|
|
113
|
+
],
|
|
114
|
+
"accounts": [
|
|
115
|
+
{
|
|
116
|
+
"name": "global_config",
|
|
117
|
+
"writable": true,
|
|
118
|
+
"pda": {
|
|
119
|
+
"seeds": [
|
|
120
|
+
{
|
|
121
|
+
"kind": "const",
|
|
122
|
+
"value": [
|
|
123
|
+
97,
|
|
124
|
+
116,
|
|
125
|
+
108,
|
|
126
|
+
97,
|
|
127
|
+
115,
|
|
128
|
+
95,
|
|
129
|
+
99,
|
|
130
|
+
111,
|
|
131
|
+
110,
|
|
132
|
+
102,
|
|
133
|
+
105,
|
|
134
|
+
103
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "authority",
|
|
142
|
+
"signer": true
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"args": [
|
|
146
|
+
{
|
|
147
|
+
"name": "new_count",
|
|
148
|
+
"type": "u64"
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"name": "advance_epoch",
|
|
154
|
+
"docs": [
|
|
155
|
+
"Crea el WorldState para el epoch actual después de un WorldReset.",
|
|
156
|
+
"Debe llamarse junto con create_leaderboard cuando el authority",
|
|
157
|
+
"recibe el evento WorldReset. Sin esto, la siguiente recolecta",
|
|
158
|
+
"del nuevo epoch fallaría porque el WorldState no existiría."
|
|
159
|
+
],
|
|
160
|
+
"discriminator": [
|
|
161
|
+
93,
|
|
162
|
+
138,
|
|
163
|
+
234,
|
|
164
|
+
218,
|
|
165
|
+
241,
|
|
166
|
+
230,
|
|
167
|
+
132,
|
|
168
|
+
38
|
|
169
|
+
],
|
|
170
|
+
"accounts": [
|
|
171
|
+
{
|
|
172
|
+
"name": "world_config",
|
|
173
|
+
"pda": {
|
|
174
|
+
"seeds": [
|
|
175
|
+
{
|
|
176
|
+
"kind": "const",
|
|
177
|
+
"value": [
|
|
178
|
+
119,
|
|
179
|
+
111,
|
|
180
|
+
114,
|
|
181
|
+
108,
|
|
182
|
+
100,
|
|
183
|
+
95,
|
|
184
|
+
99,
|
|
185
|
+
111,
|
|
186
|
+
110,
|
|
187
|
+
102,
|
|
188
|
+
105,
|
|
189
|
+
103
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"kind": "account",
|
|
194
|
+
"path": "world_config.world_id",
|
|
195
|
+
"account": "WorldConfig"
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"name": "world_state",
|
|
202
|
+
"writable": true,
|
|
203
|
+
"pda": {
|
|
204
|
+
"seeds": [
|
|
205
|
+
{
|
|
206
|
+
"kind": "const",
|
|
207
|
+
"value": [
|
|
208
|
+
119,
|
|
209
|
+
111,
|
|
210
|
+
114,
|
|
211
|
+
108,
|
|
212
|
+
100,
|
|
213
|
+
95,
|
|
214
|
+
115,
|
|
215
|
+
116,
|
|
216
|
+
97,
|
|
217
|
+
116,
|
|
218
|
+
101
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"kind": "account",
|
|
223
|
+
"path": "world_config.world_id",
|
|
224
|
+
"account": "WorldConfig"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"kind": "account",
|
|
228
|
+
"path": "world_config.current_epoch",
|
|
229
|
+
"account": "WorldConfig"
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"name": "authority",
|
|
236
|
+
"writable": true,
|
|
237
|
+
"signer": true
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"name": "system_program",
|
|
241
|
+
"address": "11111111111111111111111111111111"
|
|
242
|
+
}
|
|
243
|
+
],
|
|
244
|
+
"args": []
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"name": "close_protocol",
|
|
248
|
+
"docs": [
|
|
249
|
+
"⚠️ SOLO PARA DESARROLLO — cierra GlobalConfig y devuelve el rent.",
|
|
250
|
+
"",
|
|
251
|
+
"Uso: cuando el layout de GlobalConfig cambia (se agregan/quitan campos)",
|
|
252
|
+
"durante desarrollo activo en devnet, las cuentas existentes quedan",
|
|
253
|
+
"con un layout incompatible. Esta instrucción permite cerrarla y",
|
|
254
|
+
"volver a llamar initialize_protocol con el layout nuevo.",
|
|
255
|
+
"",
|
|
256
|
+
"Cierra la cuenta MANUALMENTE sin deserializarla (por eso el contexto",
|
|
257
|
+
"usa UncheckedAccount) — así funciona incluso si el layout on-chain",
|
|
258
|
+
"ya no coincide con el struct GlobalConfig actual.",
|
|
259
|
+
"",
|
|
260
|
+
"NO debe existir en el contrato final de mainnet — antes del deploy",
|
|
261
|
+
"a mainnet, reemplazar por una estrategia de migración de cuentas",
|
|
262
|
+
"apropiada (versionado de accounts, o congelar el layout antes",
|
|
263
|
+
"del primer deploy productivo)."
|
|
264
|
+
],
|
|
265
|
+
"discriminator": [
|
|
266
|
+
120,
|
|
267
|
+
48,
|
|
268
|
+
77,
|
|
269
|
+
31,
|
|
270
|
+
195,
|
|
271
|
+
128,
|
|
272
|
+
45,
|
|
273
|
+
248
|
|
274
|
+
],
|
|
275
|
+
"accounts": [
|
|
276
|
+
{
|
|
277
|
+
"name": "global_config",
|
|
278
|
+
"docs": [
|
|
279
|
+
"esto permite cerrar la cuenta aunque su layout ya no coincida",
|
|
280
|
+
"con el struct GlobalConfig actual. Solo verificamos que la",
|
|
281
|
+
"dirección derive correctamente desde las seeds del protocolo,",
|
|
282
|
+
"lo cual ya garantiza que es la cuenta correcta (no se puede",
|
|
283
|
+
"verificar protocol_authority sin deserializar, por eso esta",
|
|
284
|
+
"instrucción es solo para desarrollo — ver doc del handler)."
|
|
285
|
+
],
|
|
286
|
+
"writable": true,
|
|
287
|
+
"pda": {
|
|
288
|
+
"seeds": [
|
|
289
|
+
{
|
|
290
|
+
"kind": "const",
|
|
291
|
+
"value": [
|
|
292
|
+
97,
|
|
293
|
+
116,
|
|
294
|
+
108,
|
|
295
|
+
97,
|
|
296
|
+
115,
|
|
297
|
+
95,
|
|
298
|
+
99,
|
|
299
|
+
111,
|
|
300
|
+
110,
|
|
301
|
+
102,
|
|
302
|
+
105,
|
|
303
|
+
103
|
|
304
|
+
]
|
|
305
|
+
}
|
|
306
|
+
]
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"name": "authority",
|
|
311
|
+
"writable": true,
|
|
312
|
+
"signer": true
|
|
313
|
+
}
|
|
314
|
+
],
|
|
315
|
+
"args": []
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"name": "collect_resource",
|
|
319
|
+
"discriminator": [
|
|
320
|
+
159,
|
|
321
|
+
214,
|
|
322
|
+
149,
|
|
323
|
+
89,
|
|
324
|
+
188,
|
|
325
|
+
3,
|
|
326
|
+
225,
|
|
327
|
+
68
|
|
328
|
+
],
|
|
329
|
+
"accounts": [
|
|
330
|
+
{
|
|
331
|
+
"name": "global_config",
|
|
332
|
+
"pda": {
|
|
333
|
+
"seeds": [
|
|
334
|
+
{
|
|
335
|
+
"kind": "const",
|
|
336
|
+
"value": [
|
|
337
|
+
97,
|
|
338
|
+
116,
|
|
339
|
+
108,
|
|
340
|
+
97,
|
|
341
|
+
115,
|
|
342
|
+
95,
|
|
343
|
+
99,
|
|
344
|
+
111,
|
|
345
|
+
110,
|
|
346
|
+
102,
|
|
347
|
+
105,
|
|
348
|
+
103
|
|
349
|
+
]
|
|
350
|
+
}
|
|
351
|
+
]
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"name": "world_config",
|
|
356
|
+
"writable": true,
|
|
357
|
+
"pda": {
|
|
358
|
+
"seeds": [
|
|
359
|
+
{
|
|
360
|
+
"kind": "const",
|
|
361
|
+
"value": [
|
|
362
|
+
119,
|
|
363
|
+
111,
|
|
364
|
+
114,
|
|
365
|
+
108,
|
|
366
|
+
100,
|
|
367
|
+
95,
|
|
368
|
+
99,
|
|
369
|
+
111,
|
|
370
|
+
110,
|
|
371
|
+
102,
|
|
372
|
+
105,
|
|
373
|
+
103
|
|
374
|
+
]
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"kind": "account",
|
|
378
|
+
"path": "world_config.world_id",
|
|
379
|
+
"account": "WorldConfig"
|
|
380
|
+
}
|
|
381
|
+
]
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"name": "world_state",
|
|
386
|
+
"writable": true,
|
|
387
|
+
"pda": {
|
|
388
|
+
"seeds": [
|
|
389
|
+
{
|
|
390
|
+
"kind": "const",
|
|
391
|
+
"value": [
|
|
392
|
+
119,
|
|
393
|
+
111,
|
|
394
|
+
114,
|
|
395
|
+
108,
|
|
396
|
+
100,
|
|
397
|
+
95,
|
|
398
|
+
115,
|
|
399
|
+
116,
|
|
400
|
+
97,
|
|
401
|
+
116,
|
|
402
|
+
101
|
|
403
|
+
]
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"kind": "account",
|
|
407
|
+
"path": "world_config.world_id",
|
|
408
|
+
"account": "WorldConfig"
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"kind": "account",
|
|
412
|
+
"path": "world_config.current_epoch",
|
|
413
|
+
"account": "WorldConfig"
|
|
414
|
+
}
|
|
415
|
+
]
|
|
416
|
+
}
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"name": "player",
|
|
420
|
+
"writable": true,
|
|
421
|
+
"pda": {
|
|
422
|
+
"seeds": [
|
|
423
|
+
{
|
|
424
|
+
"kind": "const",
|
|
425
|
+
"value": [
|
|
426
|
+
112,
|
|
427
|
+
108,
|
|
428
|
+
97,
|
|
429
|
+
121,
|
|
430
|
+
101,
|
|
431
|
+
114
|
|
432
|
+
]
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"kind": "account",
|
|
436
|
+
"path": "world_config.world_id",
|
|
437
|
+
"account": "WorldConfig"
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"kind": "account",
|
|
441
|
+
"path": "owner"
|
|
442
|
+
}
|
|
443
|
+
]
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"name": "leaderboard",
|
|
448
|
+
"writable": true,
|
|
449
|
+
"pda": {
|
|
450
|
+
"seeds": [
|
|
451
|
+
{
|
|
452
|
+
"kind": "const",
|
|
453
|
+
"value": [
|
|
454
|
+
108,
|
|
455
|
+
101,
|
|
456
|
+
97,
|
|
457
|
+
100,
|
|
458
|
+
101,
|
|
459
|
+
114,
|
|
460
|
+
98,
|
|
461
|
+
111,
|
|
462
|
+
97,
|
|
463
|
+
114,
|
|
464
|
+
100
|
|
465
|
+
]
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"kind": "account",
|
|
469
|
+
"path": "world_config.world_id",
|
|
470
|
+
"account": "WorldConfig"
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"kind": "account",
|
|
474
|
+
"path": "world_config.current_epoch",
|
|
475
|
+
"account": "WorldConfig"
|
|
476
|
+
}
|
|
477
|
+
]
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"name": "owner",
|
|
482
|
+
"signer": true
|
|
483
|
+
}
|
|
484
|
+
],
|
|
485
|
+
"args": [
|
|
486
|
+
{
|
|
487
|
+
"name": "resource_type_id",
|
|
488
|
+
"type": "u8"
|
|
489
|
+
}
|
|
490
|
+
]
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
"name": "create_leaderboard",
|
|
494
|
+
"discriminator": [
|
|
495
|
+
154,
|
|
496
|
+
109,
|
|
497
|
+
101,
|
|
498
|
+
182,
|
|
499
|
+
52,
|
|
500
|
+
26,
|
|
501
|
+
30,
|
|
502
|
+
220
|
|
503
|
+
],
|
|
504
|
+
"accounts": [
|
|
505
|
+
{
|
|
506
|
+
"name": "world_config",
|
|
507
|
+
"writable": true,
|
|
508
|
+
"pda": {
|
|
509
|
+
"seeds": [
|
|
510
|
+
{
|
|
511
|
+
"kind": "const",
|
|
512
|
+
"value": [
|
|
513
|
+
119,
|
|
514
|
+
111,
|
|
515
|
+
114,
|
|
516
|
+
108,
|
|
517
|
+
100,
|
|
518
|
+
95,
|
|
519
|
+
99,
|
|
520
|
+
111,
|
|
521
|
+
110,
|
|
522
|
+
102,
|
|
523
|
+
105,
|
|
524
|
+
103
|
|
525
|
+
]
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
"kind": "account",
|
|
529
|
+
"path": "world_config.world_id",
|
|
530
|
+
"account": "WorldConfig"
|
|
531
|
+
}
|
|
532
|
+
]
|
|
533
|
+
}
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"name": "leaderboard",
|
|
537
|
+
"writable": true,
|
|
538
|
+
"pda": {
|
|
539
|
+
"seeds": [
|
|
540
|
+
{
|
|
541
|
+
"kind": "const",
|
|
542
|
+
"value": [
|
|
543
|
+
108,
|
|
544
|
+
101,
|
|
545
|
+
97,
|
|
546
|
+
100,
|
|
547
|
+
101,
|
|
548
|
+
114,
|
|
549
|
+
98,
|
|
550
|
+
111,
|
|
551
|
+
97,
|
|
552
|
+
114,
|
|
553
|
+
100
|
|
554
|
+
]
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"kind": "account",
|
|
558
|
+
"path": "world_config.world_id",
|
|
559
|
+
"account": "WorldConfig"
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"kind": "account",
|
|
563
|
+
"path": "world_config.current_epoch",
|
|
564
|
+
"account": "WorldConfig"
|
|
565
|
+
}
|
|
566
|
+
]
|
|
567
|
+
}
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"name": "authority",
|
|
571
|
+
"writable": true,
|
|
572
|
+
"signer": true
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
"name": "system_program",
|
|
576
|
+
"address": "11111111111111111111111111111111"
|
|
577
|
+
}
|
|
578
|
+
],
|
|
579
|
+
"args": []
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
"name": "create_world",
|
|
583
|
+
"discriminator": [
|
|
584
|
+
117,
|
|
585
|
+
96,
|
|
586
|
+
81,
|
|
587
|
+
112,
|
|
588
|
+
15,
|
|
589
|
+
209,
|
|
590
|
+
71,
|
|
591
|
+
63
|
|
592
|
+
],
|
|
593
|
+
"accounts": [
|
|
594
|
+
{
|
|
595
|
+
"name": "global_config",
|
|
596
|
+
"writable": true,
|
|
597
|
+
"pda": {
|
|
598
|
+
"seeds": [
|
|
599
|
+
{
|
|
600
|
+
"kind": "const",
|
|
601
|
+
"value": [
|
|
602
|
+
97,
|
|
603
|
+
116,
|
|
604
|
+
108,
|
|
605
|
+
97,
|
|
606
|
+
115,
|
|
607
|
+
95,
|
|
608
|
+
99,
|
|
609
|
+
111,
|
|
610
|
+
110,
|
|
611
|
+
102,
|
|
612
|
+
105,
|
|
613
|
+
103
|
|
614
|
+
]
|
|
615
|
+
}
|
|
616
|
+
]
|
|
617
|
+
}
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"name": "world_config",
|
|
621
|
+
"writable": true,
|
|
622
|
+
"pda": {
|
|
623
|
+
"seeds": [
|
|
624
|
+
{
|
|
625
|
+
"kind": "const",
|
|
626
|
+
"value": [
|
|
627
|
+
119,
|
|
628
|
+
111,
|
|
629
|
+
114,
|
|
630
|
+
108,
|
|
631
|
+
100,
|
|
632
|
+
95,
|
|
633
|
+
99,
|
|
634
|
+
111,
|
|
635
|
+
110,
|
|
636
|
+
102,
|
|
637
|
+
105,
|
|
638
|
+
103
|
|
639
|
+
]
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"kind": "account",
|
|
643
|
+
"path": "global_config.world_count",
|
|
644
|
+
"account": "GlobalConfig"
|
|
645
|
+
}
|
|
646
|
+
]
|
|
647
|
+
}
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
"name": "world_state",
|
|
651
|
+
"writable": true,
|
|
652
|
+
"pda": {
|
|
653
|
+
"seeds": [
|
|
654
|
+
{
|
|
655
|
+
"kind": "const",
|
|
656
|
+
"value": [
|
|
657
|
+
119,
|
|
658
|
+
111,
|
|
659
|
+
114,
|
|
660
|
+
108,
|
|
661
|
+
100,
|
|
662
|
+
95,
|
|
663
|
+
115,
|
|
664
|
+
116,
|
|
665
|
+
97,
|
|
666
|
+
116,
|
|
667
|
+
101
|
|
668
|
+
]
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
"kind": "account",
|
|
672
|
+
"path": "global_config.world_count",
|
|
673
|
+
"account": "GlobalConfig"
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"kind": "const",
|
|
677
|
+
"value": [
|
|
678
|
+
0,
|
|
679
|
+
0,
|
|
680
|
+
0,
|
|
681
|
+
0,
|
|
682
|
+
0,
|
|
683
|
+
0,
|
|
684
|
+
0,
|
|
685
|
+
0
|
|
686
|
+
]
|
|
687
|
+
}
|
|
688
|
+
]
|
|
689
|
+
}
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
"name": "treasury",
|
|
693
|
+
"writable": true
|
|
694
|
+
},
|
|
695
|
+
{
|
|
696
|
+
"name": "authority",
|
|
697
|
+
"writable": true,
|
|
698
|
+
"signer": true
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
"name": "system_program",
|
|
702
|
+
"address": "11111111111111111111111111111111"
|
|
703
|
+
}
|
|
704
|
+
],
|
|
705
|
+
"args": [
|
|
706
|
+
{
|
|
707
|
+
"name": "name",
|
|
708
|
+
"type": "string"
|
|
709
|
+
},
|
|
710
|
+
{
|
|
711
|
+
"name": "world_type",
|
|
712
|
+
"type": {
|
|
713
|
+
"defined": {
|
|
714
|
+
"name": "WorldType"
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
},
|
|
718
|
+
{
|
|
719
|
+
"name": "visibility",
|
|
720
|
+
"type": {
|
|
721
|
+
"defined": {
|
|
722
|
+
"name": "WorldVisibility"
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
{
|
|
727
|
+
"name": "total_resources",
|
|
728
|
+
"type": "u64"
|
|
729
|
+
},
|
|
730
|
+
{
|
|
731
|
+
"name": "epoch_duration",
|
|
732
|
+
"type": "i64"
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"name": "global_cooldown",
|
|
736
|
+
"type": "i64"
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
"name": "max_daily_collects",
|
|
740
|
+
"type": "u32"
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
"name": "resource_types",
|
|
744
|
+
"type": {
|
|
745
|
+
"vec": {
|
|
746
|
+
"defined": {
|
|
747
|
+
"name": "ResourceType"
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
]
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
"name": "initialize_protocol",
|
|
756
|
+
"discriminator": [
|
|
757
|
+
188,
|
|
758
|
+
233,
|
|
759
|
+
252,
|
|
760
|
+
106,
|
|
761
|
+
134,
|
|
762
|
+
146,
|
|
763
|
+
202,
|
|
764
|
+
91
|
|
765
|
+
],
|
|
766
|
+
"accounts": [
|
|
767
|
+
{
|
|
768
|
+
"name": "global_config",
|
|
769
|
+
"writable": true,
|
|
770
|
+
"pda": {
|
|
771
|
+
"seeds": [
|
|
772
|
+
{
|
|
773
|
+
"kind": "const",
|
|
774
|
+
"value": [
|
|
775
|
+
97,
|
|
776
|
+
116,
|
|
777
|
+
108,
|
|
778
|
+
97,
|
|
779
|
+
115,
|
|
780
|
+
95,
|
|
781
|
+
99,
|
|
782
|
+
111,
|
|
783
|
+
110,
|
|
784
|
+
102,
|
|
785
|
+
105,
|
|
786
|
+
103
|
|
787
|
+
]
|
|
788
|
+
}
|
|
789
|
+
]
|
|
790
|
+
}
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
"name": "authority",
|
|
794
|
+
"writable": true,
|
|
795
|
+
"signer": true
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
"name": "system_program",
|
|
799
|
+
"address": "11111111111111111111111111111111"
|
|
800
|
+
}
|
|
801
|
+
],
|
|
802
|
+
"args": [
|
|
803
|
+
{
|
|
804
|
+
"name": "treasury",
|
|
805
|
+
"type": "pubkey"
|
|
806
|
+
}
|
|
807
|
+
]
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"name": "initialize_whitelist",
|
|
811
|
+
"discriminator": [
|
|
812
|
+
223,
|
|
813
|
+
228,
|
|
814
|
+
11,
|
|
815
|
+
219,
|
|
816
|
+
112,
|
|
817
|
+
174,
|
|
818
|
+
108,
|
|
819
|
+
18
|
|
820
|
+
],
|
|
821
|
+
"accounts": [
|
|
822
|
+
{
|
|
823
|
+
"name": "world_config",
|
|
824
|
+
"pda": {
|
|
825
|
+
"seeds": [
|
|
826
|
+
{
|
|
827
|
+
"kind": "const",
|
|
828
|
+
"value": [
|
|
829
|
+
119,
|
|
830
|
+
111,
|
|
831
|
+
114,
|
|
832
|
+
108,
|
|
833
|
+
100,
|
|
834
|
+
95,
|
|
835
|
+
99,
|
|
836
|
+
111,
|
|
837
|
+
110,
|
|
838
|
+
102,
|
|
839
|
+
105,
|
|
840
|
+
103
|
|
841
|
+
]
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
"kind": "account",
|
|
845
|
+
"path": "world_config.world_id",
|
|
846
|
+
"account": "WorldConfig"
|
|
847
|
+
}
|
|
848
|
+
]
|
|
849
|
+
}
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
"name": "whitelist",
|
|
853
|
+
"writable": true,
|
|
854
|
+
"pda": {
|
|
855
|
+
"seeds": [
|
|
856
|
+
{
|
|
857
|
+
"kind": "const",
|
|
858
|
+
"value": [
|
|
859
|
+
119,
|
|
860
|
+
104,
|
|
861
|
+
105,
|
|
862
|
+
116,
|
|
863
|
+
101,
|
|
864
|
+
108,
|
|
865
|
+
105,
|
|
866
|
+
115,
|
|
867
|
+
116
|
|
868
|
+
]
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
"kind": "account",
|
|
872
|
+
"path": "world_config.world_id",
|
|
873
|
+
"account": "WorldConfig"
|
|
874
|
+
}
|
|
875
|
+
]
|
|
876
|
+
}
|
|
877
|
+
},
|
|
878
|
+
{
|
|
879
|
+
"name": "authority",
|
|
880
|
+
"writable": true,
|
|
881
|
+
"signer": true
|
|
882
|
+
},
|
|
883
|
+
{
|
|
884
|
+
"name": "system_program",
|
|
885
|
+
"address": "11111111111111111111111111111111"
|
|
886
|
+
}
|
|
887
|
+
],
|
|
888
|
+
"args": []
|
|
889
|
+
},
|
|
890
|
+
{
|
|
891
|
+
"name": "mint_player",
|
|
892
|
+
"docs": [
|
|
893
|
+
"Mintea un Player en un mundo público."
|
|
894
|
+
],
|
|
895
|
+
"discriminator": [
|
|
896
|
+
35,
|
|
897
|
+
216,
|
|
898
|
+
24,
|
|
899
|
+
42,
|
|
900
|
+
131,
|
|
901
|
+
130,
|
|
902
|
+
187,
|
|
903
|
+
65
|
|
904
|
+
],
|
|
905
|
+
"accounts": [
|
|
906
|
+
{
|
|
907
|
+
"name": "global_config",
|
|
908
|
+
"pda": {
|
|
909
|
+
"seeds": [
|
|
910
|
+
{
|
|
911
|
+
"kind": "const",
|
|
912
|
+
"value": [
|
|
913
|
+
97,
|
|
914
|
+
116,
|
|
915
|
+
108,
|
|
916
|
+
97,
|
|
917
|
+
115,
|
|
918
|
+
95,
|
|
919
|
+
99,
|
|
920
|
+
111,
|
|
921
|
+
110,
|
|
922
|
+
102,
|
|
923
|
+
105,
|
|
924
|
+
103
|
|
925
|
+
]
|
|
926
|
+
}
|
|
927
|
+
]
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
{
|
|
931
|
+
"name": "world_config",
|
|
932
|
+
"pda": {
|
|
933
|
+
"seeds": [
|
|
934
|
+
{
|
|
935
|
+
"kind": "const",
|
|
936
|
+
"value": [
|
|
937
|
+
119,
|
|
938
|
+
111,
|
|
939
|
+
114,
|
|
940
|
+
108,
|
|
941
|
+
100,
|
|
942
|
+
95,
|
|
943
|
+
99,
|
|
944
|
+
111,
|
|
945
|
+
110,
|
|
946
|
+
102,
|
|
947
|
+
105,
|
|
948
|
+
103
|
|
949
|
+
]
|
|
950
|
+
},
|
|
951
|
+
{
|
|
952
|
+
"kind": "account",
|
|
953
|
+
"path": "world_config.world_id",
|
|
954
|
+
"account": "WorldConfig"
|
|
955
|
+
}
|
|
956
|
+
]
|
|
957
|
+
}
|
|
958
|
+
},
|
|
959
|
+
{
|
|
960
|
+
"name": "player",
|
|
961
|
+
"writable": true,
|
|
962
|
+
"pda": {
|
|
963
|
+
"seeds": [
|
|
964
|
+
{
|
|
965
|
+
"kind": "const",
|
|
966
|
+
"value": [
|
|
967
|
+
112,
|
|
968
|
+
108,
|
|
969
|
+
97,
|
|
970
|
+
121,
|
|
971
|
+
101,
|
|
972
|
+
114
|
|
973
|
+
]
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
"kind": "account",
|
|
977
|
+
"path": "world_config.world_id",
|
|
978
|
+
"account": "WorldConfig"
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
"kind": "account",
|
|
982
|
+
"path": "owner"
|
|
983
|
+
}
|
|
984
|
+
]
|
|
985
|
+
}
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
"name": "owner",
|
|
989
|
+
"writable": true,
|
|
990
|
+
"signer": true
|
|
991
|
+
},
|
|
992
|
+
{
|
|
993
|
+
"name": "system_program",
|
|
994
|
+
"address": "11111111111111111111111111111111"
|
|
995
|
+
}
|
|
996
|
+
],
|
|
997
|
+
"args": [
|
|
998
|
+
{
|
|
999
|
+
"name": "name",
|
|
1000
|
+
"type": "string"
|
|
1001
|
+
},
|
|
1002
|
+
{
|
|
1003
|
+
"name": "metadata_uri",
|
|
1004
|
+
"type": "string"
|
|
1005
|
+
}
|
|
1006
|
+
]
|
|
1007
|
+
},
|
|
1008
|
+
{
|
|
1009
|
+
"name": "mint_player_private",
|
|
1010
|
+
"docs": [
|
|
1011
|
+
"Mintea un Player en un mundo privado — verifica whitelist."
|
|
1012
|
+
],
|
|
1013
|
+
"discriminator": [
|
|
1014
|
+
31,
|
|
1015
|
+
244,
|
|
1016
|
+
228,
|
|
1017
|
+
218,
|
|
1018
|
+
148,
|
|
1019
|
+
125,
|
|
1020
|
+
163,
|
|
1021
|
+
253
|
|
1022
|
+
],
|
|
1023
|
+
"accounts": [
|
|
1024
|
+
{
|
|
1025
|
+
"name": "global_config",
|
|
1026
|
+
"pda": {
|
|
1027
|
+
"seeds": [
|
|
1028
|
+
{
|
|
1029
|
+
"kind": "const",
|
|
1030
|
+
"value": [
|
|
1031
|
+
97,
|
|
1032
|
+
116,
|
|
1033
|
+
108,
|
|
1034
|
+
97,
|
|
1035
|
+
115,
|
|
1036
|
+
95,
|
|
1037
|
+
99,
|
|
1038
|
+
111,
|
|
1039
|
+
110,
|
|
1040
|
+
102,
|
|
1041
|
+
105,
|
|
1042
|
+
103
|
|
1043
|
+
]
|
|
1044
|
+
}
|
|
1045
|
+
]
|
|
1046
|
+
}
|
|
1047
|
+
},
|
|
1048
|
+
{
|
|
1049
|
+
"name": "world_config",
|
|
1050
|
+
"pda": {
|
|
1051
|
+
"seeds": [
|
|
1052
|
+
{
|
|
1053
|
+
"kind": "const",
|
|
1054
|
+
"value": [
|
|
1055
|
+
119,
|
|
1056
|
+
111,
|
|
1057
|
+
114,
|
|
1058
|
+
108,
|
|
1059
|
+
100,
|
|
1060
|
+
95,
|
|
1061
|
+
99,
|
|
1062
|
+
111,
|
|
1063
|
+
110,
|
|
1064
|
+
102,
|
|
1065
|
+
105,
|
|
1066
|
+
103
|
|
1067
|
+
]
|
|
1068
|
+
},
|
|
1069
|
+
{
|
|
1070
|
+
"kind": "account",
|
|
1071
|
+
"path": "world_config.world_id",
|
|
1072
|
+
"account": "WorldConfig"
|
|
1073
|
+
}
|
|
1074
|
+
]
|
|
1075
|
+
}
|
|
1076
|
+
},
|
|
1077
|
+
{
|
|
1078
|
+
"name": "player",
|
|
1079
|
+
"writable": true,
|
|
1080
|
+
"pda": {
|
|
1081
|
+
"seeds": [
|
|
1082
|
+
{
|
|
1083
|
+
"kind": "const",
|
|
1084
|
+
"value": [
|
|
1085
|
+
112,
|
|
1086
|
+
108,
|
|
1087
|
+
97,
|
|
1088
|
+
121,
|
|
1089
|
+
101,
|
|
1090
|
+
114
|
|
1091
|
+
]
|
|
1092
|
+
},
|
|
1093
|
+
{
|
|
1094
|
+
"kind": "account",
|
|
1095
|
+
"path": "world_config.world_id",
|
|
1096
|
+
"account": "WorldConfig"
|
|
1097
|
+
},
|
|
1098
|
+
{
|
|
1099
|
+
"kind": "account",
|
|
1100
|
+
"path": "owner"
|
|
1101
|
+
}
|
|
1102
|
+
]
|
|
1103
|
+
}
|
|
1104
|
+
},
|
|
1105
|
+
{
|
|
1106
|
+
"name": "whitelist",
|
|
1107
|
+
"pda": {
|
|
1108
|
+
"seeds": [
|
|
1109
|
+
{
|
|
1110
|
+
"kind": "const",
|
|
1111
|
+
"value": [
|
|
1112
|
+
119,
|
|
1113
|
+
104,
|
|
1114
|
+
105,
|
|
1115
|
+
116,
|
|
1116
|
+
101,
|
|
1117
|
+
108,
|
|
1118
|
+
105,
|
|
1119
|
+
115,
|
|
1120
|
+
116
|
|
1121
|
+
]
|
|
1122
|
+
},
|
|
1123
|
+
{
|
|
1124
|
+
"kind": "account",
|
|
1125
|
+
"path": "world_config.world_id",
|
|
1126
|
+
"account": "WorldConfig"
|
|
1127
|
+
}
|
|
1128
|
+
]
|
|
1129
|
+
}
|
|
1130
|
+
},
|
|
1131
|
+
{
|
|
1132
|
+
"name": "owner",
|
|
1133
|
+
"writable": true,
|
|
1134
|
+
"signer": true
|
|
1135
|
+
},
|
|
1136
|
+
{
|
|
1137
|
+
"name": "system_program",
|
|
1138
|
+
"address": "11111111111111111111111111111111"
|
|
1139
|
+
}
|
|
1140
|
+
],
|
|
1141
|
+
"args": [
|
|
1142
|
+
{
|
|
1143
|
+
"name": "name",
|
|
1144
|
+
"type": "string"
|
|
1145
|
+
},
|
|
1146
|
+
{
|
|
1147
|
+
"name": "metadata_uri",
|
|
1148
|
+
"type": "string"
|
|
1149
|
+
}
|
|
1150
|
+
]
|
|
1151
|
+
},
|
|
1152
|
+
{
|
|
1153
|
+
"name": "pause_protocol",
|
|
1154
|
+
"docs": [
|
|
1155
|
+
"Emergency stop — pausa create_world, mint_player y collect_resource",
|
|
1156
|
+
"en TODO el protocolo. Las lecturas siguen funcionando normalmente.",
|
|
1157
|
+
"Solo puede llamarla el protocol_authority."
|
|
1158
|
+
],
|
|
1159
|
+
"discriminator": [
|
|
1160
|
+
144,
|
|
1161
|
+
95,
|
|
1162
|
+
0,
|
|
1163
|
+
107,
|
|
1164
|
+
119,
|
|
1165
|
+
39,
|
|
1166
|
+
248,
|
|
1167
|
+
141
|
|
1168
|
+
],
|
|
1169
|
+
"accounts": [
|
|
1170
|
+
{
|
|
1171
|
+
"name": "global_config",
|
|
1172
|
+
"writable": true,
|
|
1173
|
+
"pda": {
|
|
1174
|
+
"seeds": [
|
|
1175
|
+
{
|
|
1176
|
+
"kind": "const",
|
|
1177
|
+
"value": [
|
|
1178
|
+
97,
|
|
1179
|
+
116,
|
|
1180
|
+
108,
|
|
1181
|
+
97,
|
|
1182
|
+
115,
|
|
1183
|
+
95,
|
|
1184
|
+
99,
|
|
1185
|
+
111,
|
|
1186
|
+
110,
|
|
1187
|
+
102,
|
|
1188
|
+
105,
|
|
1189
|
+
103
|
|
1190
|
+
]
|
|
1191
|
+
}
|
|
1192
|
+
]
|
|
1193
|
+
}
|
|
1194
|
+
},
|
|
1195
|
+
{
|
|
1196
|
+
"name": "authority",
|
|
1197
|
+
"signer": true
|
|
1198
|
+
}
|
|
1199
|
+
],
|
|
1200
|
+
"args": []
|
|
1201
|
+
},
|
|
1202
|
+
{
|
|
1203
|
+
"name": "remove_from_whitelist",
|
|
1204
|
+
"discriminator": [
|
|
1205
|
+
7,
|
|
1206
|
+
144,
|
|
1207
|
+
216,
|
|
1208
|
+
239,
|
|
1209
|
+
243,
|
|
1210
|
+
236,
|
|
1211
|
+
193,
|
|
1212
|
+
235
|
|
1213
|
+
],
|
|
1214
|
+
"accounts": [
|
|
1215
|
+
{
|
|
1216
|
+
"name": "world_config",
|
|
1217
|
+
"pda": {
|
|
1218
|
+
"seeds": [
|
|
1219
|
+
{
|
|
1220
|
+
"kind": "const",
|
|
1221
|
+
"value": [
|
|
1222
|
+
119,
|
|
1223
|
+
111,
|
|
1224
|
+
114,
|
|
1225
|
+
108,
|
|
1226
|
+
100,
|
|
1227
|
+
95,
|
|
1228
|
+
99,
|
|
1229
|
+
111,
|
|
1230
|
+
110,
|
|
1231
|
+
102,
|
|
1232
|
+
105,
|
|
1233
|
+
103
|
|
1234
|
+
]
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
"kind": "account",
|
|
1238
|
+
"path": "world_config.world_id",
|
|
1239
|
+
"account": "WorldConfig"
|
|
1240
|
+
}
|
|
1241
|
+
]
|
|
1242
|
+
}
|
|
1243
|
+
},
|
|
1244
|
+
{
|
|
1245
|
+
"name": "whitelist",
|
|
1246
|
+
"writable": true,
|
|
1247
|
+
"pda": {
|
|
1248
|
+
"seeds": [
|
|
1249
|
+
{
|
|
1250
|
+
"kind": "const",
|
|
1251
|
+
"value": [
|
|
1252
|
+
119,
|
|
1253
|
+
104,
|
|
1254
|
+
105,
|
|
1255
|
+
116,
|
|
1256
|
+
101,
|
|
1257
|
+
108,
|
|
1258
|
+
105,
|
|
1259
|
+
115,
|
|
1260
|
+
116
|
|
1261
|
+
]
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
"kind": "account",
|
|
1265
|
+
"path": "world_config.world_id",
|
|
1266
|
+
"account": "WorldConfig"
|
|
1267
|
+
}
|
|
1268
|
+
]
|
|
1269
|
+
}
|
|
1270
|
+
},
|
|
1271
|
+
{
|
|
1272
|
+
"name": "authority",
|
|
1273
|
+
"signer": true
|
|
1274
|
+
}
|
|
1275
|
+
],
|
|
1276
|
+
"args": [
|
|
1277
|
+
{
|
|
1278
|
+
"name": "member",
|
|
1279
|
+
"type": "pubkey"
|
|
1280
|
+
}
|
|
1281
|
+
]
|
|
1282
|
+
},
|
|
1283
|
+
{
|
|
1284
|
+
"name": "unpause_protocol",
|
|
1285
|
+
"docs": [
|
|
1286
|
+
"Reactiva el protocolo después de una pausa de emergencia.",
|
|
1287
|
+
"Solo puede llamarla el protocol_authority."
|
|
1288
|
+
],
|
|
1289
|
+
"discriminator": [
|
|
1290
|
+
183,
|
|
1291
|
+
154,
|
|
1292
|
+
5,
|
|
1293
|
+
183,
|
|
1294
|
+
105,
|
|
1295
|
+
76,
|
|
1296
|
+
87,
|
|
1297
|
+
18
|
|
1298
|
+
],
|
|
1299
|
+
"accounts": [
|
|
1300
|
+
{
|
|
1301
|
+
"name": "global_config",
|
|
1302
|
+
"writable": true,
|
|
1303
|
+
"pda": {
|
|
1304
|
+
"seeds": [
|
|
1305
|
+
{
|
|
1306
|
+
"kind": "const",
|
|
1307
|
+
"value": [
|
|
1308
|
+
97,
|
|
1309
|
+
116,
|
|
1310
|
+
108,
|
|
1311
|
+
97,
|
|
1312
|
+
115,
|
|
1313
|
+
95,
|
|
1314
|
+
99,
|
|
1315
|
+
111,
|
|
1316
|
+
110,
|
|
1317
|
+
102,
|
|
1318
|
+
105,
|
|
1319
|
+
103
|
|
1320
|
+
]
|
|
1321
|
+
}
|
|
1322
|
+
]
|
|
1323
|
+
}
|
|
1324
|
+
},
|
|
1325
|
+
{
|
|
1326
|
+
"name": "authority",
|
|
1327
|
+
"signer": true
|
|
1328
|
+
}
|
|
1329
|
+
],
|
|
1330
|
+
"args": []
|
|
1331
|
+
}
|
|
1332
|
+
],
|
|
1333
|
+
"accounts": [
|
|
1334
|
+
{
|
|
1335
|
+
"name": "GlobalConfig",
|
|
1336
|
+
"discriminator": [
|
|
1337
|
+
149,
|
|
1338
|
+
8,
|
|
1339
|
+
156,
|
|
1340
|
+
202,
|
|
1341
|
+
160,
|
|
1342
|
+
252,
|
|
1343
|
+
176,
|
|
1344
|
+
217
|
|
1345
|
+
]
|
|
1346
|
+
},
|
|
1347
|
+
{
|
|
1348
|
+
"name": "Leaderboard",
|
|
1349
|
+
"discriminator": [
|
|
1350
|
+
247,
|
|
1351
|
+
186,
|
|
1352
|
+
238,
|
|
1353
|
+
243,
|
|
1354
|
+
194,
|
|
1355
|
+
30,
|
|
1356
|
+
9,
|
|
1357
|
+
36
|
|
1358
|
+
]
|
|
1359
|
+
},
|
|
1360
|
+
{
|
|
1361
|
+
"name": "Player",
|
|
1362
|
+
"discriminator": [
|
|
1363
|
+
205,
|
|
1364
|
+
222,
|
|
1365
|
+
112,
|
|
1366
|
+
7,
|
|
1367
|
+
165,
|
|
1368
|
+
155,
|
|
1369
|
+
206,
|
|
1370
|
+
218
|
|
1371
|
+
]
|
|
1372
|
+
},
|
|
1373
|
+
{
|
|
1374
|
+
"name": "Whitelist",
|
|
1375
|
+
"discriminator": [
|
|
1376
|
+
204,
|
|
1377
|
+
176,
|
|
1378
|
+
52,
|
|
1379
|
+
79,
|
|
1380
|
+
146,
|
|
1381
|
+
121,
|
|
1382
|
+
54,
|
|
1383
|
+
247
|
|
1384
|
+
]
|
|
1385
|
+
},
|
|
1386
|
+
{
|
|
1387
|
+
"name": "WorldConfig",
|
|
1388
|
+
"discriminator": [
|
|
1389
|
+
129,
|
|
1390
|
+
176,
|
|
1391
|
+
71,
|
|
1392
|
+
206,
|
|
1393
|
+
143,
|
|
1394
|
+
239,
|
|
1395
|
+
6,
|
|
1396
|
+
181
|
|
1397
|
+
]
|
|
1398
|
+
},
|
|
1399
|
+
{
|
|
1400
|
+
"name": "WorldState",
|
|
1401
|
+
"discriminator": [
|
|
1402
|
+
23,
|
|
1403
|
+
119,
|
|
1404
|
+
204,
|
|
1405
|
+
118,
|
|
1406
|
+
21,
|
|
1407
|
+
87,
|
|
1408
|
+
11,
|
|
1409
|
+
102
|
|
1410
|
+
]
|
|
1411
|
+
}
|
|
1412
|
+
],
|
|
1413
|
+
"events": [
|
|
1414
|
+
{
|
|
1415
|
+
"name": "LeaderboardInitialized",
|
|
1416
|
+
"discriminator": [
|
|
1417
|
+
135,
|
|
1418
|
+
70,
|
|
1419
|
+
99,
|
|
1420
|
+
96,
|
|
1421
|
+
246,
|
|
1422
|
+
187,
|
|
1423
|
+
226,
|
|
1424
|
+
226
|
|
1425
|
+
]
|
|
1426
|
+
},
|
|
1427
|
+
{
|
|
1428
|
+
"name": "PlayerMinted",
|
|
1429
|
+
"discriminator": [
|
|
1430
|
+
45,
|
|
1431
|
+
83,
|
|
1432
|
+
75,
|
|
1433
|
+
178,
|
|
1434
|
+
29,
|
|
1435
|
+
223,
|
|
1436
|
+
69,
|
|
1437
|
+
141
|
|
1438
|
+
]
|
|
1439
|
+
},
|
|
1440
|
+
{
|
|
1441
|
+
"name": "PlayerRemovedFromWhitelist",
|
|
1442
|
+
"discriminator": [
|
|
1443
|
+
32,
|
|
1444
|
+
57,
|
|
1445
|
+
225,
|
|
1446
|
+
173,
|
|
1447
|
+
28,
|
|
1448
|
+
8,
|
|
1449
|
+
130,
|
|
1450
|
+
202
|
|
1451
|
+
]
|
|
1452
|
+
},
|
|
1453
|
+
{
|
|
1454
|
+
"name": "PlayerWhitelisted",
|
|
1455
|
+
"discriminator": [
|
|
1456
|
+
227,
|
|
1457
|
+
206,
|
|
1458
|
+
32,
|
|
1459
|
+
239,
|
|
1460
|
+
89,
|
|
1461
|
+
7,
|
|
1462
|
+
132,
|
|
1463
|
+
242
|
|
1464
|
+
]
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
"name": "ProtocolPaused",
|
|
1468
|
+
"discriminator": [
|
|
1469
|
+
35,
|
|
1470
|
+
111,
|
|
1471
|
+
245,
|
|
1472
|
+
138,
|
|
1473
|
+
237,
|
|
1474
|
+
199,
|
|
1475
|
+
79,
|
|
1476
|
+
223
|
|
1477
|
+
]
|
|
1478
|
+
},
|
|
1479
|
+
{
|
|
1480
|
+
"name": "ProtocolUnpaused",
|
|
1481
|
+
"discriminator": [
|
|
1482
|
+
248,
|
|
1483
|
+
204,
|
|
1484
|
+
112,
|
|
1485
|
+
239,
|
|
1486
|
+
72,
|
|
1487
|
+
67,
|
|
1488
|
+
127,
|
|
1489
|
+
216
|
|
1490
|
+
]
|
|
1491
|
+
},
|
|
1492
|
+
{
|
|
1493
|
+
"name": "ResourceCollected",
|
|
1494
|
+
"discriminator": [
|
|
1495
|
+
47,
|
|
1496
|
+
195,
|
|
1497
|
+
233,
|
|
1498
|
+
76,
|
|
1499
|
+
77,
|
|
1500
|
+
229,
|
|
1501
|
+
15,
|
|
1502
|
+
132
|
|
1503
|
+
]
|
|
1504
|
+
},
|
|
1505
|
+
{
|
|
1506
|
+
"name": "WorldCreated",
|
|
1507
|
+
"discriminator": [
|
|
1508
|
+
111,
|
|
1509
|
+
190,
|
|
1510
|
+
191,
|
|
1511
|
+
12,
|
|
1512
|
+
58,
|
|
1513
|
+
35,
|
|
1514
|
+
19,
|
|
1515
|
+
80
|
|
1516
|
+
]
|
|
1517
|
+
},
|
|
1518
|
+
{
|
|
1519
|
+
"name": "WorldReset",
|
|
1520
|
+
"discriminator": [
|
|
1521
|
+
55,
|
|
1522
|
+
208,
|
|
1523
|
+
138,
|
|
1524
|
+
77,
|
|
1525
|
+
238,
|
|
1526
|
+
224,
|
|
1527
|
+
137,
|
|
1528
|
+
5
|
|
1529
|
+
]
|
|
1530
|
+
}
|
|
1531
|
+
],
|
|
1532
|
+
"errors": [
|
|
1533
|
+
{
|
|
1534
|
+
"code": 6000,
|
|
1535
|
+
"name": "NameTooLong",
|
|
1536
|
+
"msg": "El nombre no puede superar 64 caracteres"
|
|
1537
|
+
},
|
|
1538
|
+
{
|
|
1539
|
+
"code": 6001,
|
|
1540
|
+
"name": "UriTooLong",
|
|
1541
|
+
"msg": "El URI no puede superar 200 caracteres"
|
|
1542
|
+
},
|
|
1543
|
+
{
|
|
1544
|
+
"code": 6002,
|
|
1545
|
+
"name": "NotOwner",
|
|
1546
|
+
"msg": "No eres el dueño de este personaje"
|
|
1547
|
+
},
|
|
1548
|
+
{
|
|
1549
|
+
"code": 6003,
|
|
1550
|
+
"name": "CollectCooldown",
|
|
1551
|
+
"msg": "Debes esperar antes de recolectar de nuevo"
|
|
1552
|
+
},
|
|
1553
|
+
{
|
|
1554
|
+
"code": 6004,
|
|
1555
|
+
"name": "WorldExhausted",
|
|
1556
|
+
"msg": "El mundo está agotado — espera el reset"
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
"code": 6005,
|
|
1560
|
+
"name": "Unauthorized",
|
|
1561
|
+
"msg": "Solo el authority puede ejecutar esta acción"
|
|
1562
|
+
},
|
|
1563
|
+
{
|
|
1564
|
+
"code": 6006,
|
|
1565
|
+
"name": "EpochMismatch",
|
|
1566
|
+
"msg": "El epoch del leaderboard no coincide con el mundo actual"
|
|
1567
|
+
},
|
|
1568
|
+
{
|
|
1569
|
+
"code": 6007,
|
|
1570
|
+
"name": "InvalidResourceType",
|
|
1571
|
+
"msg": "Tipo de recurso inválido para este mundo"
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
"code": 6008,
|
|
1575
|
+
"name": "TooManyResourceTypes",
|
|
1576
|
+
"msg": "Máximo 8 tipos de recurso por mundo"
|
|
1577
|
+
},
|
|
1578
|
+
{
|
|
1579
|
+
"code": 6009,
|
|
1580
|
+
"name": "WorldNameTooLong",
|
|
1581
|
+
"msg": "El nombre del mundo no puede superar 64 caracteres"
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
"code": 6010,
|
|
1585
|
+
"name": "NotWhitelisted",
|
|
1586
|
+
"msg": "No tienes acceso a este mundo privado"
|
|
1587
|
+
},
|
|
1588
|
+
{
|
|
1589
|
+
"code": 6011,
|
|
1590
|
+
"name": "AlreadyWhitelisted",
|
|
1591
|
+
"msg": "La wallet ya está en la whitelist"
|
|
1592
|
+
},
|
|
1593
|
+
{
|
|
1594
|
+
"code": 6012,
|
|
1595
|
+
"name": "InvalidTotalResources",
|
|
1596
|
+
"msg": "total_resources debe ser mayor a 0"
|
|
1597
|
+
},
|
|
1598
|
+
{
|
|
1599
|
+
"code": 6013,
|
|
1600
|
+
"name": "InvalidEpochDuration",
|
|
1601
|
+
"msg": "epoch_duration debe ser mayor a 0"
|
|
1602
|
+
},
|
|
1603
|
+
{
|
|
1604
|
+
"code": 6014,
|
|
1605
|
+
"name": "ProtocolPaused",
|
|
1606
|
+
"msg": "El protocolo está pausado temporalmente por mantenimiento"
|
|
1607
|
+
},
|
|
1608
|
+
{
|
|
1609
|
+
"code": 6015,
|
|
1610
|
+
"name": "DailyLimitReached",
|
|
1611
|
+
"msg": "Alcanzaste el límite diario de recolectas para este mundo"
|
|
1612
|
+
}
|
|
1613
|
+
],
|
|
1614
|
+
"types": [
|
|
1615
|
+
{
|
|
1616
|
+
"name": "GlobalConfig",
|
|
1617
|
+
"docs": [
|
|
1618
|
+
"Configuración global del protocolo Atlas.",
|
|
1619
|
+
"PDA: [\"atlas_config\"]",
|
|
1620
|
+
"Solo existe una instancia. La inicializa el deployer del protocolo."
|
|
1621
|
+
],
|
|
1622
|
+
"type": {
|
|
1623
|
+
"kind": "struct",
|
|
1624
|
+
"fields": [
|
|
1625
|
+
{
|
|
1626
|
+
"name": "protocol_authority",
|
|
1627
|
+
"docs": [
|
|
1628
|
+
"Wallet que administra el protocolo (puede actualizar fees, etc.)"
|
|
1629
|
+
],
|
|
1630
|
+
"type": "pubkey"
|
|
1631
|
+
},
|
|
1632
|
+
{
|
|
1633
|
+
"name": "world_count",
|
|
1634
|
+
"docs": [
|
|
1635
|
+
"Contador global de mundos — se incrementa con cada create_world",
|
|
1636
|
+
"También es el world_id del próximo mundo"
|
|
1637
|
+
],
|
|
1638
|
+
"type": "u64"
|
|
1639
|
+
},
|
|
1640
|
+
{
|
|
1641
|
+
"name": "private_world_fee",
|
|
1642
|
+
"docs": [
|
|
1643
|
+
"Fee en lamports para crear un Private World (default: 0.1 SOL)"
|
|
1644
|
+
],
|
|
1645
|
+
"type": "u64"
|
|
1646
|
+
},
|
|
1647
|
+
{
|
|
1648
|
+
"name": "treasury",
|
|
1649
|
+
"docs": [
|
|
1650
|
+
"Dirección del treasury donde van las fees"
|
|
1651
|
+
],
|
|
1652
|
+
"type": "pubkey"
|
|
1653
|
+
},
|
|
1654
|
+
{
|
|
1655
|
+
"name": "paused",
|
|
1656
|
+
"docs": [
|
|
1657
|
+
"Emergency stop — si es true, create_world, mint_player y",
|
|
1658
|
+
"collect_resource fallan en TODO el protocolo. No afecta lecturas."
|
|
1659
|
+
],
|
|
1660
|
+
"type": "bool"
|
|
1661
|
+
},
|
|
1662
|
+
{
|
|
1663
|
+
"name": "bump",
|
|
1664
|
+
"type": "u8"
|
|
1665
|
+
}
|
|
1666
|
+
]
|
|
1667
|
+
}
|
|
1668
|
+
},
|
|
1669
|
+
{
|
|
1670
|
+
"name": "Leaderboard",
|
|
1671
|
+
"docs": [
|
|
1672
|
+
"Leaderboard de un mundo para un epoch específico.",
|
|
1673
|
+
"El historial persiste — cada epoch tiene su propio leaderboard.",
|
|
1674
|
+
"PDA: [\"leaderboard\", world_id.to_le_bytes(), epoch.to_le_bytes()]"
|
|
1675
|
+
],
|
|
1676
|
+
"type": {
|
|
1677
|
+
"kind": "struct",
|
|
1678
|
+
"fields": [
|
|
1679
|
+
{
|
|
1680
|
+
"name": "world_id",
|
|
1681
|
+
"type": "u64"
|
|
1682
|
+
},
|
|
1683
|
+
{
|
|
1684
|
+
"name": "epoch",
|
|
1685
|
+
"type": "u64"
|
|
1686
|
+
},
|
|
1687
|
+
{
|
|
1688
|
+
"name": "entries",
|
|
1689
|
+
"docs": [
|
|
1690
|
+
"Top 25 players del epoch — ordenado por recursos recolectados (desc)"
|
|
1691
|
+
],
|
|
1692
|
+
"type": {
|
|
1693
|
+
"vec": {
|
|
1694
|
+
"defined": {
|
|
1695
|
+
"name": "LeaderboardEntry"
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
}
|
|
1699
|
+
},
|
|
1700
|
+
{
|
|
1701
|
+
"name": "bump",
|
|
1702
|
+
"type": "u8"
|
|
1703
|
+
}
|
|
1704
|
+
]
|
|
1705
|
+
}
|
|
1706
|
+
},
|
|
1707
|
+
{
|
|
1708
|
+
"name": "LeaderboardEntry",
|
|
1709
|
+
"docs": [
|
|
1710
|
+
"Entrada del leaderboard"
|
|
1711
|
+
],
|
|
1712
|
+
"type": {
|
|
1713
|
+
"kind": "struct",
|
|
1714
|
+
"fields": [
|
|
1715
|
+
{
|
|
1716
|
+
"name": "owner",
|
|
1717
|
+
"type": "pubkey"
|
|
1718
|
+
},
|
|
1719
|
+
{
|
|
1720
|
+
"name": "name",
|
|
1721
|
+
"type": "string"
|
|
1722
|
+
},
|
|
1723
|
+
{
|
|
1724
|
+
"name": "resources_collected",
|
|
1725
|
+
"type": "u64"
|
|
1726
|
+
},
|
|
1727
|
+
{
|
|
1728
|
+
"name": "level",
|
|
1729
|
+
"type": "u64"
|
|
1730
|
+
}
|
|
1731
|
+
]
|
|
1732
|
+
}
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
"name": "LeaderboardInitialized",
|
|
1736
|
+
"docs": [
|
|
1737
|
+
"Emitido cuando se inicializa el leaderboard de un epoch"
|
|
1738
|
+
],
|
|
1739
|
+
"type": {
|
|
1740
|
+
"kind": "struct",
|
|
1741
|
+
"fields": [
|
|
1742
|
+
{
|
|
1743
|
+
"name": "world_id",
|
|
1744
|
+
"type": "u64"
|
|
1745
|
+
},
|
|
1746
|
+
{
|
|
1747
|
+
"name": "epoch",
|
|
1748
|
+
"type": "u64"
|
|
1749
|
+
}
|
|
1750
|
+
]
|
|
1751
|
+
}
|
|
1752
|
+
},
|
|
1753
|
+
{
|
|
1754
|
+
"name": "Player",
|
|
1755
|
+
"docs": [
|
|
1756
|
+
"Jugador en un mundo específico.",
|
|
1757
|
+
"Una wallet puede tener un Player por mundo.",
|
|
1758
|
+
"PDA: [\"player\", world_id.to_le_bytes(), owner]"
|
|
1759
|
+
],
|
|
1760
|
+
"type": {
|
|
1761
|
+
"kind": "struct",
|
|
1762
|
+
"fields": [
|
|
1763
|
+
{
|
|
1764
|
+
"name": "world_id",
|
|
1765
|
+
"docs": [
|
|
1766
|
+
"ID del mundo al que pertenece este player"
|
|
1767
|
+
],
|
|
1768
|
+
"type": "u64"
|
|
1769
|
+
},
|
|
1770
|
+
{
|
|
1771
|
+
"name": "owner",
|
|
1772
|
+
"docs": [
|
|
1773
|
+
"Wallet dueña del player"
|
|
1774
|
+
],
|
|
1775
|
+
"type": "pubkey"
|
|
1776
|
+
},
|
|
1777
|
+
{
|
|
1778
|
+
"name": "name",
|
|
1779
|
+
"docs": [
|
|
1780
|
+
"Nombre del personaje"
|
|
1781
|
+
],
|
|
1782
|
+
"type": "string"
|
|
1783
|
+
},
|
|
1784
|
+
{
|
|
1785
|
+
"name": "metadata_uri",
|
|
1786
|
+
"docs": [
|
|
1787
|
+
"URI a metadata en Arweave (subido con Irys antes de llamar mint_player)"
|
|
1788
|
+
],
|
|
1789
|
+
"type": "string"
|
|
1790
|
+
},
|
|
1791
|
+
{
|
|
1792
|
+
"name": "level",
|
|
1793
|
+
"docs": [
|
|
1794
|
+
"Nivel actual — calculado on-chain como 1 + (resources_collected / level_threshold)"
|
|
1795
|
+
],
|
|
1796
|
+
"type": "u64"
|
|
1797
|
+
},
|
|
1798
|
+
{
|
|
1799
|
+
"name": "resources_collected",
|
|
1800
|
+
"docs": [
|
|
1801
|
+
"Puntos acumulados en el epoch actual"
|
|
1802
|
+
],
|
|
1803
|
+
"type": "u64"
|
|
1804
|
+
},
|
|
1805
|
+
{
|
|
1806
|
+
"name": "last_collect_time",
|
|
1807
|
+
"docs": [
|
|
1808
|
+
"Unix timestamp de la última recolecta — para verificar cooldown on-chain"
|
|
1809
|
+
],
|
|
1810
|
+
"type": "i64"
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
"name": "current_epoch",
|
|
1814
|
+
"docs": [
|
|
1815
|
+
"Epoch en el que se registran los recursos_collected actuales",
|
|
1816
|
+
"Al cambiar de epoch, el frontend puede re-fetchear y mostrar el historial"
|
|
1817
|
+
],
|
|
1818
|
+
"type": "u64"
|
|
1819
|
+
},
|
|
1820
|
+
{
|
|
1821
|
+
"name": "daily_collect_count",
|
|
1822
|
+
"docs": [
|
|
1823
|
+
"Recolectas realizadas en el día actual (rate limiting anti-sybil)"
|
|
1824
|
+
],
|
|
1825
|
+
"type": "u32"
|
|
1826
|
+
},
|
|
1827
|
+
{
|
|
1828
|
+
"name": "daily_window_started_at",
|
|
1829
|
+
"docs": [
|
|
1830
|
+
"Unix timestamp del inicio del día actual de rate limiting.",
|
|
1831
|
+
"Se resetea daily_collect_count a 0 cuando pasan 24h desde este valor."
|
|
1832
|
+
],
|
|
1833
|
+
"type": "i64"
|
|
1834
|
+
},
|
|
1835
|
+
{
|
|
1836
|
+
"name": "bump",
|
|
1837
|
+
"type": "u8"
|
|
1838
|
+
}
|
|
1839
|
+
]
|
|
1840
|
+
}
|
|
1841
|
+
},
|
|
1842
|
+
{
|
|
1843
|
+
"name": "PlayerMinted",
|
|
1844
|
+
"docs": [
|
|
1845
|
+
"Emitido cuando un jugador mintea su personaje"
|
|
1846
|
+
],
|
|
1847
|
+
"type": {
|
|
1848
|
+
"kind": "struct",
|
|
1849
|
+
"fields": [
|
|
1850
|
+
{
|
|
1851
|
+
"name": "world_id",
|
|
1852
|
+
"type": "u64"
|
|
1853
|
+
},
|
|
1854
|
+
{
|
|
1855
|
+
"name": "owner",
|
|
1856
|
+
"type": "pubkey"
|
|
1857
|
+
},
|
|
1858
|
+
{
|
|
1859
|
+
"name": "name",
|
|
1860
|
+
"type": "string"
|
|
1861
|
+
},
|
|
1862
|
+
{
|
|
1863
|
+
"name": "metadata_uri",
|
|
1864
|
+
"type": "string"
|
|
1865
|
+
}
|
|
1866
|
+
]
|
|
1867
|
+
}
|
|
1868
|
+
},
|
|
1869
|
+
{
|
|
1870
|
+
"name": "PlayerRemovedFromWhitelist",
|
|
1871
|
+
"docs": [
|
|
1872
|
+
"Emitido cuando se remueve una wallet de la whitelist (Private Worlds)"
|
|
1873
|
+
],
|
|
1874
|
+
"type": {
|
|
1875
|
+
"kind": "struct",
|
|
1876
|
+
"fields": [
|
|
1877
|
+
{
|
|
1878
|
+
"name": "world_id",
|
|
1879
|
+
"type": "u64"
|
|
1880
|
+
},
|
|
1881
|
+
{
|
|
1882
|
+
"name": "member",
|
|
1883
|
+
"type": "pubkey"
|
|
1884
|
+
}
|
|
1885
|
+
]
|
|
1886
|
+
}
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
"name": "PlayerWhitelisted",
|
|
1890
|
+
"docs": [
|
|
1891
|
+
"Emitido cuando se agrega una wallet a la whitelist (Private Worlds)"
|
|
1892
|
+
],
|
|
1893
|
+
"type": {
|
|
1894
|
+
"kind": "struct",
|
|
1895
|
+
"fields": [
|
|
1896
|
+
{
|
|
1897
|
+
"name": "world_id",
|
|
1898
|
+
"type": "u64"
|
|
1899
|
+
},
|
|
1900
|
+
{
|
|
1901
|
+
"name": "member",
|
|
1902
|
+
"type": "pubkey"
|
|
1903
|
+
}
|
|
1904
|
+
]
|
|
1905
|
+
}
|
|
1906
|
+
},
|
|
1907
|
+
{
|
|
1908
|
+
"name": "ProtocolPaused",
|
|
1909
|
+
"docs": [
|
|
1910
|
+
"Emitido cuando el protocol_authority activa el emergency stop"
|
|
1911
|
+
],
|
|
1912
|
+
"type": {
|
|
1913
|
+
"kind": "struct",
|
|
1914
|
+
"fields": [
|
|
1915
|
+
{
|
|
1916
|
+
"name": "by",
|
|
1917
|
+
"type": "pubkey"
|
|
1918
|
+
}
|
|
1919
|
+
]
|
|
1920
|
+
}
|
|
1921
|
+
},
|
|
1922
|
+
{
|
|
1923
|
+
"name": "ProtocolUnpaused",
|
|
1924
|
+
"docs": [
|
|
1925
|
+
"Emitido cuando el protocol_authority reactiva el protocolo"
|
|
1926
|
+
],
|
|
1927
|
+
"type": {
|
|
1928
|
+
"kind": "struct",
|
|
1929
|
+
"fields": [
|
|
1930
|
+
{
|
|
1931
|
+
"name": "by",
|
|
1932
|
+
"type": "pubkey"
|
|
1933
|
+
}
|
|
1934
|
+
]
|
|
1935
|
+
}
|
|
1936
|
+
},
|
|
1937
|
+
{
|
|
1938
|
+
"name": "ResourceCollected",
|
|
1939
|
+
"docs": [
|
|
1940
|
+
"Emitido en cada recolecta exitosa",
|
|
1941
|
+
"El frontend lo usa para actualizar el HUD en tiempo real sin polling"
|
|
1942
|
+
],
|
|
1943
|
+
"type": {
|
|
1944
|
+
"kind": "struct",
|
|
1945
|
+
"fields": [
|
|
1946
|
+
{
|
|
1947
|
+
"name": "world_id",
|
|
1948
|
+
"type": "u64"
|
|
1949
|
+
},
|
|
1950
|
+
{
|
|
1951
|
+
"name": "epoch",
|
|
1952
|
+
"type": "u64"
|
|
1953
|
+
},
|
|
1954
|
+
{
|
|
1955
|
+
"name": "wallet",
|
|
1956
|
+
"type": "pubkey"
|
|
1957
|
+
},
|
|
1958
|
+
{
|
|
1959
|
+
"name": "resource_type",
|
|
1960
|
+
"type": "u8"
|
|
1961
|
+
},
|
|
1962
|
+
{
|
|
1963
|
+
"name": "points",
|
|
1964
|
+
"type": "u64"
|
|
1965
|
+
},
|
|
1966
|
+
{
|
|
1967
|
+
"name": "world_progress",
|
|
1968
|
+
"type": "u64"
|
|
1969
|
+
},
|
|
1970
|
+
{
|
|
1971
|
+
"name": "total_resources",
|
|
1972
|
+
"type": "u64"
|
|
1973
|
+
}
|
|
1974
|
+
]
|
|
1975
|
+
}
|
|
1976
|
+
},
|
|
1977
|
+
{
|
|
1978
|
+
"name": "ResourceType",
|
|
1979
|
+
"docs": [
|
|
1980
|
+
"Tipo de recurso definido on-chain por el developer al crear el mundo.",
|
|
1981
|
+
"Cada mundo puede tener hasta 8 tipos de recurso con sus propias reglas."
|
|
1982
|
+
],
|
|
1983
|
+
"type": {
|
|
1984
|
+
"kind": "struct",
|
|
1985
|
+
"fields": [
|
|
1986
|
+
{
|
|
1987
|
+
"name": "id",
|
|
1988
|
+
"docs": [
|
|
1989
|
+
"ID del tipo (0-7) — lo que se pasa en collect_resource"
|
|
1990
|
+
],
|
|
1991
|
+
"type": "u8"
|
|
1992
|
+
},
|
|
1993
|
+
{
|
|
1994
|
+
"name": "name",
|
|
1995
|
+
"docs": [
|
|
1996
|
+
"Nombre del recurso (ej: \"common\", \"rare\", \"vote\", \"listing\")"
|
|
1997
|
+
],
|
|
1998
|
+
"type": "string"
|
|
1999
|
+
},
|
|
2000
|
+
{
|
|
2001
|
+
"name": "points",
|
|
2002
|
+
"docs": [
|
|
2003
|
+
"Puntos que otorga recolectar este recurso"
|
|
2004
|
+
],
|
|
2005
|
+
"type": "u64"
|
|
2006
|
+
},
|
|
2007
|
+
{
|
|
2008
|
+
"name": "cooldown_seconds",
|
|
2009
|
+
"docs": [
|
|
2010
|
+
"Cooldown específico para este tipo en segundos",
|
|
2011
|
+
"Si es 0, usa el cooldown global del mundo"
|
|
2012
|
+
],
|
|
2013
|
+
"type": "i64"
|
|
2014
|
+
}
|
|
2015
|
+
]
|
|
2016
|
+
}
|
|
2017
|
+
},
|
|
2018
|
+
{
|
|
2019
|
+
"name": "Whitelist",
|
|
2020
|
+
"docs": [
|
|
2021
|
+
"Whitelist de un mundo privado.",
|
|
2022
|
+
"Solo wallets en esta lista pueden mintear un Player en el mundo.",
|
|
2023
|
+
"PDA: [\"whitelist\", world_id.to_le_bytes()]"
|
|
2024
|
+
],
|
|
2025
|
+
"type": {
|
|
2026
|
+
"kind": "struct",
|
|
2027
|
+
"fields": [
|
|
2028
|
+
{
|
|
2029
|
+
"name": "world_id",
|
|
2030
|
+
"type": "u64"
|
|
2031
|
+
},
|
|
2032
|
+
{
|
|
2033
|
+
"name": "members",
|
|
2034
|
+
"docs": [
|
|
2035
|
+
"Wallets autorizadas — máximo 100 por account",
|
|
2036
|
+
"Para mundos grandes se pueden crear múltiples Whitelist accounts (paginadas)"
|
|
2037
|
+
],
|
|
2038
|
+
"type": {
|
|
2039
|
+
"vec": "pubkey"
|
|
2040
|
+
}
|
|
2041
|
+
},
|
|
2042
|
+
{
|
|
2043
|
+
"name": "bump",
|
|
2044
|
+
"type": "u8"
|
|
2045
|
+
}
|
|
2046
|
+
]
|
|
2047
|
+
}
|
|
2048
|
+
},
|
|
2049
|
+
{
|
|
2050
|
+
"name": "WorldConfig",
|
|
2051
|
+
"docs": [
|
|
2052
|
+
"Configuración inmutable del mundo.",
|
|
2053
|
+
"Se crea una vez con create_world y no cambia entre epochs.",
|
|
2054
|
+
"PDA: [\"world_config\", world_id.to_le_bytes()]"
|
|
2055
|
+
],
|
|
2056
|
+
"type": {
|
|
2057
|
+
"kind": "struct",
|
|
2058
|
+
"fields": [
|
|
2059
|
+
{
|
|
2060
|
+
"name": "world_id",
|
|
2061
|
+
"docs": [
|
|
2062
|
+
"ID único del mundo — asignado por el protocolo (auto-incremental)"
|
|
2063
|
+
],
|
|
2064
|
+
"type": "u64"
|
|
2065
|
+
},
|
|
2066
|
+
{
|
|
2067
|
+
"name": "authority",
|
|
2068
|
+
"docs": [
|
|
2069
|
+
"Wallet que creó y administra el mundo"
|
|
2070
|
+
],
|
|
2071
|
+
"type": "pubkey"
|
|
2072
|
+
},
|
|
2073
|
+
{
|
|
2074
|
+
"name": "name",
|
|
2075
|
+
"docs": [
|
|
2076
|
+
"Nombre del mundo"
|
|
2077
|
+
],
|
|
2078
|
+
"type": "string"
|
|
2079
|
+
},
|
|
2080
|
+
{
|
|
2081
|
+
"name": "world_type",
|
|
2082
|
+
"docs": [
|
|
2083
|
+
"Tipo de mundo — Gaming, Defi, Dao, Marketplace, Custom"
|
|
2084
|
+
],
|
|
2085
|
+
"type": {
|
|
2086
|
+
"defined": {
|
|
2087
|
+
"name": "WorldType"
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
},
|
|
2091
|
+
{
|
|
2092
|
+
"name": "visibility",
|
|
2093
|
+
"docs": [
|
|
2094
|
+
"Visibilidad — Public o Private"
|
|
2095
|
+
],
|
|
2096
|
+
"type": {
|
|
2097
|
+
"defined": {
|
|
2098
|
+
"name": "WorldVisibility"
|
|
2099
|
+
}
|
|
2100
|
+
}
|
|
2101
|
+
},
|
|
2102
|
+
{
|
|
2103
|
+
"name": "total_resources",
|
|
2104
|
+
"docs": [
|
|
2105
|
+
"Recursos totales disponibles por epoch"
|
|
2106
|
+
],
|
|
2107
|
+
"type": "u64"
|
|
2108
|
+
},
|
|
2109
|
+
{
|
|
2110
|
+
"name": "epoch_duration",
|
|
2111
|
+
"docs": [
|
|
2112
|
+
"Duración máxima de cada epoch en segundos",
|
|
2113
|
+
"El epoch termina cuando se agotan los recursos O cuando expira este tiempo"
|
|
2114
|
+
],
|
|
2115
|
+
"type": "i64"
|
|
2116
|
+
},
|
|
2117
|
+
{
|
|
2118
|
+
"name": "global_cooldown",
|
|
2119
|
+
"docs": [
|
|
2120
|
+
"Cooldown global entre recolectas (segundos)",
|
|
2121
|
+
"Puede ser sobreescrito por el cooldown específico de cada ResourceType"
|
|
2122
|
+
],
|
|
2123
|
+
"type": "i64"
|
|
2124
|
+
},
|
|
2125
|
+
{
|
|
2126
|
+
"name": "resource_types",
|
|
2127
|
+
"docs": [
|
|
2128
|
+
"Tipos de recurso del mundo (máximo 8)"
|
|
2129
|
+
],
|
|
2130
|
+
"type": {
|
|
2131
|
+
"vec": {
|
|
2132
|
+
"defined": {
|
|
2133
|
+
"name": "ResourceType"
|
|
2134
|
+
}
|
|
2135
|
+
}
|
|
2136
|
+
}
|
|
2137
|
+
},
|
|
2138
|
+
{
|
|
2139
|
+
"name": "current_epoch",
|
|
2140
|
+
"docs": [
|
|
2141
|
+
"Epoch actual del mundo"
|
|
2142
|
+
],
|
|
2143
|
+
"type": "u64"
|
|
2144
|
+
},
|
|
2145
|
+
{
|
|
2146
|
+
"name": "max_daily_collects",
|
|
2147
|
+
"docs": [
|
|
2148
|
+
"Máximo de recolectas por wallet por ventana de 24h.",
|
|
2149
|
+
"0 significa sin límite (no recomendado para mundos públicos grandes).",
|
|
2150
|
+
"Protección anti-sybil / anti-farming a nivel de mundo."
|
|
2151
|
+
],
|
|
2152
|
+
"type": "u32"
|
|
2153
|
+
},
|
|
2154
|
+
{
|
|
2155
|
+
"name": "bump",
|
|
2156
|
+
"type": "u8"
|
|
2157
|
+
}
|
|
2158
|
+
]
|
|
2159
|
+
}
|
|
2160
|
+
},
|
|
2161
|
+
{
|
|
2162
|
+
"name": "WorldCreated",
|
|
2163
|
+
"docs": [
|
|
2164
|
+
"Emitido cuando se crea un nuevo mundo"
|
|
2165
|
+
],
|
|
2166
|
+
"type": {
|
|
2167
|
+
"kind": "struct",
|
|
2168
|
+
"fields": [
|
|
2169
|
+
{
|
|
2170
|
+
"name": "world_id",
|
|
2171
|
+
"type": "u64"
|
|
2172
|
+
},
|
|
2173
|
+
{
|
|
2174
|
+
"name": "authority",
|
|
2175
|
+
"type": "pubkey"
|
|
2176
|
+
},
|
|
2177
|
+
{
|
|
2178
|
+
"name": "name",
|
|
2179
|
+
"type": "string"
|
|
2180
|
+
},
|
|
2181
|
+
{
|
|
2182
|
+
"name": "world_type",
|
|
2183
|
+
"type": "u8"
|
|
2184
|
+
},
|
|
2185
|
+
{
|
|
2186
|
+
"name": "visibility",
|
|
2187
|
+
"type": "u8"
|
|
2188
|
+
},
|
|
2189
|
+
{
|
|
2190
|
+
"name": "total_resources",
|
|
2191
|
+
"type": "u64"
|
|
2192
|
+
},
|
|
2193
|
+
{
|
|
2194
|
+
"name": "epoch_duration",
|
|
2195
|
+
"type": "i64"
|
|
2196
|
+
}
|
|
2197
|
+
]
|
|
2198
|
+
}
|
|
2199
|
+
},
|
|
2200
|
+
{
|
|
2201
|
+
"name": "WorldReset",
|
|
2202
|
+
"docs": [
|
|
2203
|
+
"Emitido cuando el mundo se agota o expira",
|
|
2204
|
+
"El authority debe escuchar este evento y crear el leaderboard del nuevo epoch"
|
|
2205
|
+
],
|
|
2206
|
+
"type": {
|
|
2207
|
+
"kind": "struct",
|
|
2208
|
+
"fields": [
|
|
2209
|
+
{
|
|
2210
|
+
"name": "world_id",
|
|
2211
|
+
"type": "u64"
|
|
2212
|
+
},
|
|
2213
|
+
{
|
|
2214
|
+
"name": "completed_epoch",
|
|
2215
|
+
"type": "u64"
|
|
2216
|
+
},
|
|
2217
|
+
{
|
|
2218
|
+
"name": "new_epoch",
|
|
2219
|
+
"type": "u64"
|
|
2220
|
+
},
|
|
2221
|
+
{
|
|
2222
|
+
"name": "winner",
|
|
2223
|
+
"type": "pubkey"
|
|
2224
|
+
},
|
|
2225
|
+
{
|
|
2226
|
+
"name": "total_collected",
|
|
2227
|
+
"type": "u64"
|
|
2228
|
+
}
|
|
2229
|
+
]
|
|
2230
|
+
}
|
|
2231
|
+
},
|
|
2232
|
+
{
|
|
2233
|
+
"name": "WorldState",
|
|
2234
|
+
"docs": [
|
|
2235
|
+
"Estado mutable del mundo — se resetea con cada epoch.",
|
|
2236
|
+
"La configuración vive en WorldConfig (inmutable).",
|
|
2237
|
+
"PDA: [\"world_state\", world_id.to_le_bytes(), epoch.to_le_bytes()]"
|
|
2238
|
+
],
|
|
2239
|
+
"type": {
|
|
2240
|
+
"kind": "struct",
|
|
2241
|
+
"fields": [
|
|
2242
|
+
{
|
|
2243
|
+
"name": "world_id",
|
|
2244
|
+
"type": "u64"
|
|
2245
|
+
},
|
|
2246
|
+
{
|
|
2247
|
+
"name": "epoch",
|
|
2248
|
+
"type": "u64"
|
|
2249
|
+
},
|
|
2250
|
+
{
|
|
2251
|
+
"name": "resources_collected",
|
|
2252
|
+
"type": "u64"
|
|
2253
|
+
},
|
|
2254
|
+
{
|
|
2255
|
+
"name": "started_at",
|
|
2256
|
+
"type": "i64"
|
|
2257
|
+
},
|
|
2258
|
+
{
|
|
2259
|
+
"name": "bump",
|
|
2260
|
+
"type": "u8"
|
|
2261
|
+
}
|
|
2262
|
+
]
|
|
2263
|
+
}
|
|
2264
|
+
},
|
|
2265
|
+
{
|
|
2266
|
+
"name": "WorldType",
|
|
2267
|
+
"docs": [
|
|
2268
|
+
"Tipo de mundo — define la narrativa y el SDK que lo consume.",
|
|
2269
|
+
"El contrato no diferencia comportamiento por tipo —",
|
|
2270
|
+
"eso lo hace el SDK en el cliente."
|
|
2271
|
+
],
|
|
2272
|
+
"type": {
|
|
2273
|
+
"kind": "enum",
|
|
2274
|
+
"variants": [
|
|
2275
|
+
{
|
|
2276
|
+
"name": "Gaming"
|
|
2277
|
+
},
|
|
2278
|
+
{
|
|
2279
|
+
"name": "Defi"
|
|
2280
|
+
},
|
|
2281
|
+
{
|
|
2282
|
+
"name": "Dao"
|
|
2283
|
+
},
|
|
2284
|
+
{
|
|
2285
|
+
"name": "Marketplace"
|
|
2286
|
+
},
|
|
2287
|
+
{
|
|
2288
|
+
"name": "Custom"
|
|
2289
|
+
}
|
|
2290
|
+
]
|
|
2291
|
+
}
|
|
2292
|
+
},
|
|
2293
|
+
{
|
|
2294
|
+
"name": "WorldVisibility",
|
|
2295
|
+
"docs": [
|
|
2296
|
+
"Visibilidad del mundo"
|
|
2297
|
+
],
|
|
2298
|
+
"type": {
|
|
2299
|
+
"kind": "enum",
|
|
2300
|
+
"variants": [
|
|
2301
|
+
{
|
|
2302
|
+
"name": "Public"
|
|
2303
|
+
},
|
|
2304
|
+
{
|
|
2305
|
+
"name": "Private"
|
|
2306
|
+
}
|
|
2307
|
+
]
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
]
|
|
2311
|
+
}
|