@@ -134,385 +134,6 @@ function spend:
134
134
output r4 as PuzzleArcadeCoin.record;
135
135
"# ;
136
136
137
- pub const CREDITS_ALEO_PROGRAM : & str = r#"
138
- program credits.aleo;
139
-
140
- mapping committee:
141
- key as address.public;
142
- value as committee_state.public;
143
-
144
- struct committee_state:
145
- is_open as boolean;
146
- commission as u8;
147
-
148
- mapping delegated:
149
- key as address.public;
150
- value as u64.public;
151
-
152
- mapping metadata:
153
- key as address.public;
154
- value as u32.public;
155
-
156
- mapping bonded:
157
- key as address.public;
158
- value as bond_state.public;
159
-
160
- struct bond_state:
161
- validator as address;
162
- microcredits as u64;
163
-
164
- mapping unbonding:
165
- key as address.public;
166
- value as unbond_state.public;
167
-
168
- struct unbond_state:
169
- microcredits as u64;
170
- height as u32;
171
-
172
- mapping account:
173
- key as address.public;
174
- value as u64.public;
175
-
176
- mapping withdraw:
177
- key as address.public;
178
- value as address.public;
179
-
180
- record credits:
181
- owner as address.private;
182
- microcredits as u64.private;
183
-
184
- function bond_validator:
185
- input r0 as address.public;
186
- input r1 as u64.public;
187
- input r2 as u8.public;
188
- assert.neq self.signer r0 ;
189
- gte r1 1000000u64 into r3;
190
- assert.eq r3 true ;
191
- gt r2 100u8 into r4;
192
- assert.neq r4 true ;
193
- async bond_validator self.signer r0 r1 r2 into r5;
194
- output r5 as credits.aleo/bond_validator.future;
195
-
196
- finalize bond_validator:
197
- input r0 as address.public;
198
- input r1 as address.public;
199
- input r2 as u64.public;
200
- input r3 as u8.public;
201
- get.or_use withdraw[r0] r1 into r4;
202
- assert.eq r1 r4 ;
203
- cast true r3 into r5 as committee_state;
204
- get.or_use committee[r0] r5 into r6;
205
- assert.eq r3 r6.commission ;
206
- cast r0 0u64 into r7 as bond_state;
207
- get.or_use bonded[r0] r7 into r8;
208
- assert.eq r8.validator r0 ;
209
- add r8.microcredits r2 into r9;
210
- cast r0 r9 into r10 as bond_state;
211
- get.or_use delegated[r0] 0u64 into r11;
212
- add r2 r11 into r12;
213
- gte r12 10000000000000u64 into r13;
214
- assert.eq r13 true ;
215
- get account[r0] into r14;
216
- sub r14 r2 into r15;
217
- contains committee[r0] into r16;
218
- branch.eq r16 true to validator_in_committee;
219
- set r4 into withdraw[r0];
220
- gte r2 100000000u64 into r17;
221
- assert.eq r17 true ;
222
- get.or_use metadata[aleo1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3ljyzc] 0u32 into r18;
223
- add r18 1u32 into r19;
224
- set r19 into metadata[aleo1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3ljyzc];
225
- contains unbonding[r0] into r20;
226
- assert.eq r20 false ;
227
- position validator_in_committee;
228
- set r6 into committee[r0];
229
- set r12 into delegated[r0];
230
- set r10 into bonded[r0];
231
- set r15 into account[r0];
232
-
233
- function bond_public:
234
- input r0 as address.public;
235
- input r1 as address.public;
236
- input r2 as u64.public;
237
- gte r2 1000000u64 into r3;
238
- assert.eq r3 true ;
239
- assert.neq self.caller r0 ;
240
- async bond_public self.caller r0 r1 r2 into r4;
241
- output r4 as credits.aleo/bond_public.future;
242
-
243
- finalize bond_public:
244
- input r0 as address.public;
245
- input r1 as address.public;
246
- input r2 as address.public;
247
- input r3 as u64.public;
248
- get.or_use withdraw[r0] r2 into r4;
249
- assert.eq r2 r4 ;
250
- contains bonded[r0] into r5;
251
- branch.eq r5 true to continue_bond_delegator;
252
- set r2 into withdraw[r0];
253
- cast true 0u8 into r6 as committee_state;
254
- get.or_use committee[r1] r6 into r7;
255
- assert.eq r7.is_open true ;
256
- get.or_use metadata[aleo1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqanmpl0] 0u32 into r8;
257
- add r8 1u32 into r9;
258
- lte r9 100000u32 into r10;
259
- assert.eq r10 true ;
260
- set r9 into metadata[aleo1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqanmpl0];
261
- position continue_bond_delegator;
262
- cast r1 0u64 into r11 as bond_state;
263
- get.or_use bonded[r0] r11 into r12;
264
- assert.eq r12.validator r1 ;
265
- add r12.microcredits r3 into r13;
266
- gte r13 10000000000u64 into r14;
267
- assert.eq r14 true ;
268
- cast r1 r13 into r15 as bond_state;
269
- get account[r0] into r16;
270
- sub r16 r3 into r17;
271
- get.or_use delegated[r1] 0u64 into r18;
272
- add r3 r18 into r19;
273
- contains unbonding[r1] into r20;
274
- assert.eq r20 false ;
275
- set r15 into bonded[r0];
276
- set r17 into account[r0];
277
- set r19 into delegated[r1];
278
-
279
- function unbond_public:
280
- input r0 as address.public;
281
- input r1 as u64.public;
282
- async unbond_public self.caller r0 r1 into r2;
283
- output r2 as credits.aleo/unbond_public.future;
284
-
285
- finalize unbond_public:
286
- input r0 as address.public;
287
- input r1 as address.public;
288
- input r2 as u64.public;
289
- add block.height 360u32 into r3;
290
- cast 0u64 r3 into r4 as unbond_state;
291
- get bonded[r1] into r5;
292
- get withdraw[r1] into r6;
293
- is.eq r0 r6 into r7;
294
- contains withdraw[r5.validator] into r8;
295
- get.or_use withdraw[r5.validator] aleo1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3ljyzc into r9;
296
- is.eq r0 r9 into r10;
297
- and r8 r10 into r11;
298
- or r7 r11 into r12;
299
- assert.eq r12 true ;
300
- is.eq r5.validator r1 into r13;
301
- branch.eq r13 true to unbond_validator;
302
- get.or_use unbonding[r1] r4 into r14;
303
- get delegated[r5.validator] into r15;
304
- sub r5.microcredits r2 into r16;
305
- lt r16 10000000000u64 into r17;
306
- or r11 r17 into r18;
307
- ternary r18 r5.microcredits r2 into r19;
308
- add r14.microcredits r19 into r20;
309
- cast r20 r3 into r21 as unbond_state;
310
- set r21 into unbonding[r1];
311
- sub r15 r19 into r22;
312
- set r22 into delegated[r5.validator];
313
- branch.eq r18 true to remove_delegator;
314
- cast r5.validator r16 into r23 as bond_state;
315
- set r23 into bonded[r1];
316
- branch.eq true true to end_unbond_delegator;
317
- position remove_delegator;
318
- remove bonded[r1];
319
- get metadata[aleo1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqanmpl0] into r24;
320
- sub r24 1u32 into r25;
321
- set r25 into metadata[aleo1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqanmpl0];
322
- position end_unbond_delegator;
323
- gte r22 10000000000000u64 into r26;
324
- branch.eq r26 true to end;
325
- position unbond_validator;
326
- contains committee[r5.validator] into r27;
327
- nor r13 r27 into r28;
328
- branch.eq r28 true to end;
329
- get committee[r5.validator] into r29;
330
- get bonded[r5.validator] into r30;
331
- get delegated[r5.validator] into r31;
332
- lt r31 10000000000000u64 into r32;
333
- branch.eq r32 true to remove_validator;
334
- sub r31 r2 into r33;
335
- sub r30.microcredits r2 into r34;
336
- gte r34 100000000u64 into r35;
337
- gte r33 10000000000000u64 into r36;
338
- and r35 r36 into r37;
339
- branch.eq r37 false to remove_validator;
340
- get.or_use unbonding[r5.validator] r4 into r38;
341
- add r38.microcredits r2 into r39;
342
- cast r39 r3 into r40 as unbond_state;
343
- set r40 into unbonding[r5.validator];
344
- set r33 into delegated[r5.validator];
345
- cast r5.validator r34 into r41 as bond_state;
346
- set r41 into bonded[r5.validator];
347
- branch.eq true true to end;
348
- position remove_validator;
349
- remove committee[r5.validator];
350
- get metadata[aleo1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3ljyzc] into r42;
351
- sub r42 1u32 into r43;
352
- set r43 into metadata[aleo1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3ljyzc];
353
- sub r31 r30.microcredits into r44;
354
- set r44 into delegated[r5.validator];
355
- remove bonded[r5.validator];
356
- get.or_use unbonding[r5.validator] r4 into r45;
357
- add r30.microcredits r45.microcredits into r46;
358
- cast r46 r3 into r47 as unbond_state;
359
- set r47 into unbonding[r5.validator];
360
- position end;
361
-
362
- function claim_unbond_public:
363
- input r0 as address.public;
364
- async claim_unbond_public r0 into r1;
365
- output r1 as credits.aleo/claim_unbond_public.future;
366
-
367
- finalize claim_unbond_public:
368
- input r0 as address.public;
369
- get unbonding[r0] into r1;
370
- gte block.height r1.height into r2;
371
- assert.eq r2 true ;
372
- get withdraw[r0] into r3;
373
- get.or_use account[r3] 0u64 into r4;
374
- add r1.microcredits r4 into r5;
375
- set r5 into account[r3];
376
- remove unbonding[r0];
377
- contains bonded[r0] into r6;
378
- branch.eq r6 true to end;
379
- remove withdraw[r0];
380
- position end;
381
-
382
- function set_validator_state:
383
- input r0 as boolean.public;
384
- async set_validator_state self.caller r0 into r1;
385
- output r1 as credits.aleo/set_validator_state.future;
386
-
387
- finalize set_validator_state:
388
- input r0 as address.public;
389
- input r1 as boolean.public;
390
- get committee[r0] into r2;
391
- cast r1 r2.commission into r3 as committee_state;
392
- set r3 into committee[r0];
393
-
394
- function transfer_public:
395
- input r0 as address.public;
396
- input r1 as u64.public;
397
- async transfer_public self.caller r0 r1 into r2;
398
- output r2 as credits.aleo/transfer_public.future;
399
-
400
- finalize transfer_public:
401
- input r0 as address.public;
402
- input r1 as address.public;
403
- input r2 as u64.public;
404
- get account[r0] into r3;
405
- sub r3 r2 into r4;
406
- set r4 into account[r0];
407
- get.or_use account[r1] 0u64 into r5;
408
- add r5 r2 into r6;
409
- set r6 into account[r1];
410
-
411
- function transfer_public_as_signer:
412
- input r0 as address.public;
413
- input r1 as u64.public;
414
- async transfer_public_as_signer self.signer r0 r1 into r2;
415
- output r2 as credits.aleo/transfer_public_as_signer.future;
416
-
417
- finalize transfer_public_as_signer:
418
- input r0 as address.public;
419
- input r1 as address.public;
420
- input r2 as u64.public;
421
- get account[r0] into r3;
422
- sub r3 r2 into r4;
423
- set r4 into account[r0];
424
- get.or_use account[r1] 0u64 into r5;
425
- add r5 r2 into r6;
426
- set r6 into account[r1];
427
-
428
- function transfer_private:
429
- input r0 as credits.record;
430
- input r1 as address.private;
431
- input r2 as u64.private;
432
- sub r0.microcredits r2 into r3;
433
- cast r1 r2 into r4 as credits.record;
434
- cast r0.owner r3 into r5 as credits.record;
435
- output r4 as credits.record;
436
- output r5 as credits.record;
437
-
438
- function transfer_private_to_public:
439
- input r0 as credits.record;
440
- input r1 as address.public;
441
- input r2 as u64.public;
442
- sub r0.microcredits r2 into r3;
443
- cast r0.owner r3 into r4 as credits.record;
444
- async transfer_private_to_public r1 r2 into r5;
445
- output r4 as credits.record;
446
- output r5 as credits.aleo/transfer_private_to_public.future;
447
-
448
- finalize transfer_private_to_public:
449
- input r0 as address.public;
450
- input r1 as u64.public;
451
- get.or_use account[r0] 0u64 into r2;
452
- add r1 r2 into r3;
453
- set r3 into account[r0];
454
-
455
- function transfer_public_to_private:
456
- input r0 as address.private;
457
- input r1 as u64.public;
458
- cast r0 r1 into r2 as credits.record;
459
- async transfer_public_to_private self.caller r1 into r3;
460
- output r2 as credits.record;
461
- output r3 as credits.aleo/transfer_public_to_private.future;
462
-
463
- finalize transfer_public_to_private:
464
- input r0 as address.public;
465
- input r1 as u64.public;
466
- get account[r0] into r2;
467
- sub r2 r1 into r3;
468
- set r3 into account[r0];
469
-
470
- function join:
471
- input r0 as credits.record;
472
- input r1 as credits.record;
473
- add r0.microcredits r1.microcredits into r2;
474
- cast r0.owner r2 into r3 as credits.record;
475
- output r3 as credits.record;
476
-
477
- function split:
478
- input r0 as credits.record;
479
- input r1 as u64.private;
480
- sub r0.microcredits r1 into r2;
481
- sub r2 10000u64 into r3;
482
- cast r0.owner r1 into r4 as credits.record;
483
- cast r0.owner r3 into r5 as credits.record;
484
- output r4 as credits.record;
485
- output r5 as credits.record;
486
-
487
- function fee_private:
488
- input r0 as credits.record;
489
- input r1 as u64.public;
490
- input r2 as u64.public;
491
- input r3 as field.public;
492
- assert.neq r1 0u64 ;
493
- assert.neq r3 0field ;
494
- add r1 r2 into r4;
495
- sub r0.microcredits r4 into r5;
496
- cast r0.owner r5 into r6 as credits.record;
497
- output r6 as credits.record;
498
-
499
- function fee_public:
500
- input r0 as u64.public;
501
- input r1 as u64.public;
502
- input r2 as field.public;
503
- assert.neq r0 0u64 ;
504
- assert.neq r2 0field ;
505
- add r0 r1 into r3;
506
- async fee_public self.signer r3 into r4;
507
- output r4 as credits.aleo/fee_public.future;
508
-
509
- finalize fee_public:
510
- input r0 as address.public;
511
- input r1 as u64.public;
512
- get account[r0] into r2;
513
- sub r2 r1 into r3;
514
- set r3 into account[r0];
515
- "# ;
516
137
517
138
const RECORD : & str = "{ owner: aleo184vuwr5u7u0ha5f5k44067dd2uaqewxx6pe5ltha5pv99wvhfqxqv339h4.private, microcredits: 2000000u64.private, _nonce: 4106205762862305308495708971985748592380064201230396559307556388725936304984group.public}" ;
518
139
const OFFLINE_QUERY_V1 : & str = r#"{"block_height": 456789, "state_paths": {}, "state_root": "sr1flkr8ppfujdrfx7zlcz8v8p8u67ehf4q9m2jum09pkq4rkepluxquyfvcu"}"# ;
0 commit comments