-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathelector-code.fif
2476 lines (2476 loc) · 146 KB
/
elector-code.fif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
PROGRAM{
DECLPROC load_data
DECLPROC store_data
DECLPROC unpack_elect
DECLPROC pack_elect
DECLPROC unpack_past_election
DECLPROC pack_past_election
DECLPROC unpack_complaint_status
DECLPROC pack_complaint_status
DECLPROC unpack_complaint
DECLPROC pack_complaint
DECLPROC parse_complaint_prices
DECLPROC get_complaint_prices
DECLPROC get_validator_conf
DECLPROC get_current_vset
DECLPROC get_validator_descr
DECLPROC unpack_validator_descr
DECLPROC send_message_back
DECLPROC return_stake
DECLPROC send_confirmation
DECLPROC send_validator_set_to_config
DECLPROC ~credit_to
DECLPROC process_new_stake
DECLPROC unfreeze_without_bonuses
DECLPROC unfreeze_with_bonuses
DECLPROC stakes_sum
DECLPROC unfreeze_all
DECLPROC config_set_confirmed
DECLPROC process_simple_transfer
DECLPROC recover_stake
1666 DECLMETHOD after_code_upgrade
DECLPROC upgrade_code
DECLPROC register_complaint
DECLPROC punish
DECLPROC register_vote
DECLPROC proceed_register_vote
DECLPROC recv_internal
DECLPROC postpone_elections
DECLPROC compute_total_stake
DECLPROC try_elect
DECLPROC conduct_elections
DECLPROC update_active_vset_id
DECLPROC cell_hash_eq?
DECLPROC validator_set_installed
DECLPROC check_unfreeze
DECLPROC announce_new_elections
DECLPROC run_ticktock
86535 DECLMETHOD active_election_id
87852 DECLMETHOD participates_in
123541 DECLMETHOD participant_list
86698 DECLMETHOD participant_list_extended
130944 DECLMETHOD compute_returned_stake
104565 DECLMETHOD past_election_ids
81558 DECLMETHOD past_elections
74376 DECLMETHOD past_elections_list
DECLPROC complete_unpack_complaint
86500 DECLMETHOD get_past_complaints
77853 DECLMETHOD show_complaint
70210 DECLMETHOD list_complaints
97951 DECLMETHOD complaint_storage_price
load_data PROCREF:<{
//
c4 PUSH // _1
CTOS // cs
LDDICT // _4 cs
LDDICT // _4 _6 cs
LDDICT // _4 _6 _8 cs
LDGRAMS // _4 _6 _8 _10 cs
32 LDU // _4 _6 _8 _10 _12 cs
256 LDU // res res res res res res cs
ENDS
}>
store_data PROCREF:<{
// elect credits past_elections grams active_id active_hash
s0 s5 XCHG
NEWC // active_hash credits past_elections grams active_id elect _6
STDICT // active_hash credits past_elections grams active_id _7
s1 s4 XCHG // active_hash active_id past_elections grams credits _7
STDICT // active_hash active_id past_elections grams _8
s1 s2 XCHG // active_hash active_id grams past_elections _8
STDICT // active_hash active_id grams _9
SWAP // active_hash active_id _9 grams
STGRAMS // active_hash active_id _10
32 STU // active_hash _12
256 STU // _14
ENDC // _15
c4 POP
}>
unpack_elect PROCREF:<{
// elect
CTOS // es
32 LDU // _4 es
32 LDU // _4 _7 es
LDGRAMS // _4 _7 _10 es
LDGRAMS // _4 _7 _10 _12 es
LDDICT // _4 _7 _10 _12 _14 es
1 LDI // _4 _7 _10 _12 _14 _16 es
1 LDI // res res res res res res res es
ENDS
}>
pack_elect PROCREF:<{
// elect_at elect_close min_stake total_stake members failed finished
s0 s6 XCHG
NEWC // finished elect_close min_stake total_stake members failed elect_at _7
32 STU // finished elect_close min_stake total_stake members failed _9
s1 s5 XCHG // finished failed min_stake total_stake members elect_close _9
32 STU // finished failed min_stake total_stake members _11
s0 s3 XCHG2 // finished failed members total_stake _11 min_stake
STGRAMS // finished failed members total_stake _12
SWAP // finished failed members _12 total_stake
STGRAMS // finished failed members _13
STDICT // finished failed _14
1 STI // finished _16
1 STI // _18
ENDC // _19
}>
unpack_past_election PROCREF:<{
// fs
32 LDU // _2 fs
32 LDU // _2 _5 fs
256 LDU // _2 _5 _8 fs
LDDICT // _2 _5 _8 _11 fs
LDGRAMS // _2 _5 _8 _11 _13 fs
LDGRAMS // _2 _5 _8 _11 _13 _15 fs
LDDICT // res res res res res res res fs
ENDS
}>
pack_past_election PROCREF:<{
// unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses complaints
s0 s6 XCHG
NEWC // complaints stake_held vset_hash frozen_dict total_stake bonuses unfreeze_at _7
32 STU // complaints stake_held vset_hash frozen_dict total_stake bonuses _9
s1 s5 XCHG // complaints bonuses vset_hash frozen_dict total_stake stake_held _9
32 STU // complaints bonuses vset_hash frozen_dict total_stake _11
s1 s3 XCHG // complaints bonuses total_stake frozen_dict vset_hash _11
256 STU // complaints bonuses total_stake frozen_dict _13
STDICT // complaints bonuses total_stake _14
SWAP // complaints bonuses _14 total_stake
STGRAMS // complaints bonuses _15
SWAP // complaints _15 bonuses
STGRAMS // complaints _16
STDICT // _17
}>
unpack_complaint_status PROCREF:<{
// cs
8 LDU // _2 cs
SWAP // cs _2
45 EQINT // cs _6
9 THROWIFNOT
LDREF // _9 cs
LDDICT // _9 _11 cs
256 LDU // _9 _11 _13 cs
64 LDI // res res res res cs
ENDS
}>
pack_complaint_status PROCREF:<{
// complaint voters vset_id weight_remaining
45 PUSHINT // complaint voters vset_id weight_remaining _4=45
NEWC // complaint voters vset_id weight_remaining _4=45 _5
8 STU // complaint voters vset_id weight_remaining _7
s1 s4 XCHG // weight_remaining voters vset_id complaint _7
STREF // weight_remaining voters vset_id _8
s1 s2 XCHG // weight_remaining vset_id voters _8
STDICT // weight_remaining vset_id _9
256 STU // weight_remaining _11
64 STI // _13
}>
unpack_complaint PROCREF:<{
// cs
8 LDI // _2 cs
SWAP // cs _2
-68 EQINT // cs _8
9 THROWIFNOT
256 LDU // _11 cs
LDREF // _11 _14 cs
32 LDU // _11 _14 _16 cs
8 LDU // _11 _14 _16 _19 cs
256 LDU // _11 _14 _16 _19 _22 cs
LDGRAMS // _11 _14 _16 _19 _22 _25 cs
LDGRAMS // _11 _14 _16 _19 _22 _25 _27 cs
32 LDU // res res res res res res res res cs
ENDS
}>
pack_complaint PROCREF:<{
// validator_pubkey description created_at severity reward_addr paid suggested_fine suggested_fine_part
-68 PUSHINT // validator_pubkey description created_at severity reward_addr paid suggested_fine suggested_fine_part _10
NEWC // validator_pubkey description created_at severity reward_addr paid suggested_fine suggested_fine_part _10 _11
8 STI // validator_pubkey description created_at severity reward_addr paid suggested_fine suggested_fine_part _13
s1 s8 XCHG // suggested_fine_part description created_at severity reward_addr paid suggested_fine validator_pubkey _13
256 STU // suggested_fine_part description created_at severity reward_addr paid suggested_fine _15
s1 s6 XCHG // suggested_fine_part suggested_fine created_at severity reward_addr paid description _15
STREF // suggested_fine_part suggested_fine created_at severity reward_addr paid _16
s1 s4 XCHG // suggested_fine_part suggested_fine paid severity reward_addr created_at _16
32 STU // suggested_fine_part suggested_fine paid severity reward_addr _18
s1 s2 XCHG // suggested_fine_part suggested_fine paid reward_addr severity _18
8 STU // suggested_fine_part suggested_fine paid reward_addr _20
256 STU // suggested_fine_part suggested_fine paid _22
SWAP // suggested_fine_part suggested_fine _22 paid
STGRAMS // suggested_fine_part suggested_fine _23
SWAP // suggested_fine_part _23 suggested_fine
STGRAMS // suggested_fine_part _24
32 STU // _26
}>
parse_complaint_prices PROC:<{
// info
CTOS // cs
8 LDU // _4 cs
SWAP // cs _4
26 EQINT // cs _8
9 THROWIFNOT
LDGRAMS // _11 cs
LDGRAMS // _11 _13 cs
LDGRAMS // res res res cs
ENDS
}>
get_complaint_prices PROCREF:<{
//
13 PUSHINT // _1=13
CONFIGOPTPARAM // info
DUP // info info
ISNULL // info _3
IF:<{ // info
DROP //
36 PUSHPOW2 // _7
1 PUSHINT // _7 _8=1
9 PUSHPOW2 // _11 _12=1 _13=512
}>ELSE<{ // info
parse_complaint_prices INLINECALLDICT // _11 _12 _13
}>
}>
get_validator_conf PROC:<{
//
15 PUSHINT // _1=15
CONFIGOPTPARAM // _2
CTOS // cs
32 LDI // _4 cs
32 LDI // _4 _7 cs
32 LDI // _4 _7 _10 cs
32 PLDI // _4 _7 _10 _14
}>
get_current_vset PROCREF:<{
//
34 PUSHINT // _1=34
CONFIGOPTPARAM // vset
DUP // vset vset
CTOS // vset cs
8 LDU // vset _6 cs
SWAP // vset cs _6
18 EQINT // vset cs _10
40 THROWIFNOT
96 PUSHINT // vset cs _19
SDSKIPFIRST // vset cs
64 LDU // vset _23 cs
LDDICT // vset total_weight dict cs
ENDS
}>
get_validator_descr PROCREF:<{
// idx
get_current_vset INLINECALLDICT // idx _9 _10 _11
s2 POP // idx dict total_weight
-ROT
16 PUSHINT // total_weight idx dict _7=16
DICTUGET
NULLSWAPIFNOT // total_weight _12 _13
DROP // total_weight value
SWAP // value total_weight
}>
unpack_validator_descr PROC:<{
// cs
8 LDU // _2 cs
32 PUSHINT // _2 cs _5=32
NOT // _2 cs _6
s1 s2 XCHG // cs _2 _6
AND // cs _7
83 EQINT // cs _9
41 THROWIFNOT
32 LDU // _12 cs
SWAP
2390828938 PUSHINT // cs _12 _15=2390828938
EQUAL // cs _16
41 THROWIFNOT
256 LDU // _18 cs
64 LDU // _18 _31 _30
DROP // _18 _21
}>
send_message_back PROCREF:<{
// addr ans_tag query_id body grams mode
0 PUSHINT // addr ans_tag query_id body grams mode _7=0
24 PUSHINT // addr ans_tag query_id body grams mode _7=0 _8=24
NEWC // addr ans_tag query_id body grams mode _7=0 _8=24 _9
6 STU // addr ans_tag query_id body grams mode _7=0 _11
s0 s7 XCHG2 // _7=0 ans_tag query_id body grams mode _11 addr
STSLICER // _7=0 ans_tag query_id body grams mode _12
ROT // _7=0 ans_tag query_id body mode _12 grams
STGRAMS // _7=0 ans_tag query_id body mode _13
s1 s5 XCHG // mode ans_tag query_id body _7=0 _13
107 STU // mode ans_tag query_id body _27
s1 s3 XCHG // mode body query_id ans_tag _27
32 STU // mode body query_id _29
64 STU // mode body msg
OVER // mode body msg body
-1 GTINT // mode body msg _33
IF:<{ // mode body msg
32 STU // mode msg
}>ELSE<{
NIP // mode msg
}>
ENDC // mode _37
SWAP // _37 mode
SENDRAWMSG
}>
return_stake PROCREF:<{
// addr query_id reason
4000269644 PUSHINT // addr query_id reason _3=4000269644
-ROT
0 PUSHINT
64 PUSHINT // addr _3=4000269644 query_id reason _4=0 _5=64
send_message_back INLINECALLDICT
}>
send_confirmation PROCREF:<{
// addr query_id comment
4084484172 PUSHINT // addr query_id comment _3=4084484172
-ROT
1000000000 PUSHINT
2 PUSHINT // addr _3=4084484172 query_id comment _4=1000000000 _5=2
send_message_back INLINECALLDICT
}>
send_validator_set_to_config PROCREF:<{
// config_addr vset query_id
1314280276 PUSHINT // config_addr vset query_id _4=1314280276
0 PUSHINT // config_addr vset query_id _4=1314280276 _5=0
50431 PUSHINT // config_addr vset query_id _4=1314280276 _5=0 _6=50431
NEWC // config_addr vset query_id _4=1314280276 _5=0 _6=50431 _7
17 STU // config_addr vset query_id _4=1314280276 _5=0 _9
s1 s5 XCHG // _5=0 vset query_id _4=1314280276 config_addr _9
256 STU // _5=0 vset query_id _4=1314280276 _11
30 PUSHPOW2 // _5=0 vset query_id _4=1314280276 _11 _14
STGRAMS // _5=0 vset query_id _4=1314280276 _15
s1 s4 XCHG // _4=1314280276 vset query_id _5=0 _15
107 STU // _4=1314280276 vset query_id _29
s1 s3 XCHG // query_id vset _4=1314280276 _29
32 STU // query_id vset _31
s1 s2 XCHG // vset query_id _31
64 STU // vset _33
STREF // msg
ENDC // _35
1 PUSHINT // _35 _36=1
SENDRAWMSG
}>
~credit_to PROCREF:<{
// credits addr amount
s1 s2 PUSH2
8 PUSHPOW2 // credits addr amount addr credits _5=256
DICTUGET
NULLSWAPIFNOT // credits addr amount val f
IF:<{ // credits addr amount val
LDGRAMS // credits addr amount _18 _17
DROP // credits addr amount _7
ADD // credits addr amount
}>ELSE<{
DROP // credits addr amount
}>
NEWC // credits addr amount _11
SWAP // credits addr _11 amount
STGRAMS // credits addr _12
s0 s2 XCHG
8 PUSHPOW2 // _12 addr credits _13=256
DICTUSETB // credits
}>
process_new_stake PROCREF:<{
// s_addr msg_value cs query_id
s3 PUSH // s_addr msg_value cs query_id s_addr
REWRITESTDADDR // s_addr msg_value cs query_id src_wc src_addr
c4 PUSH // s_addr msg_value cs query_id src_wc src_addr _8
CTOS // s_addr msg_value cs query_id src_wc src_addr ds
LDDICT // s_addr msg_value cs query_id src_wc src_addr elect ds
OVER // s_addr msg_value cs query_id src_wc src_addr elect ds elect
ISNULL // s_addr msg_value cs query_id src_wc src_addr elect ds _13
s0 s4 XCHG // s_addr msg_value cs query_id _13 src_addr elect ds src_wc
INC // s_addr msg_value cs query_id _13 src_addr elect ds _15
s1 s4 XCHG // s_addr msg_value cs query_id ds src_addr elect _13 _15
OR // s_addr msg_value cs query_id ds src_addr elect _16
IFJMP:<{ // s_addr msg_value cs query_id ds src_addr elect
s3 s5 XCHG
5 BLKDROP // s_addr query_id
0 PUSHINT // s_addr query_id _17=0
return_stake INLINECALLDICT
}> // s_addr msg_value cs query_id ds src_addr elect
s0 s4 XCHG // s_addr msg_value elect query_id ds src_addr cs
256 LDU // s_addr msg_value elect query_id ds src_addr validator_pubkey cs
32 LDU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at cs
32 LDU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor cs
256 LDU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs
LDREF // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr _36 cs
SWAP // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs _36
CTOS // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs _38
9 PUSHPOW2 // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs _38 _39=512
PLDSLICEX // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs signature
SWAP // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature cs
ENDS
1699500148 PUSHINT // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _42=1699500148
NEWC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _42=1699500148 _43
32 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _45
s4 s(-1) PUXC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature stake_at _45
32 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _47
s3 s(-1) PUXC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature max_factor _47
32 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _49
s6 s(-1) PUXC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature src_addr _49
256 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _51
s2 s(-1) PUXC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature adnl_addr _51
256 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _53
ENDC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _54
CTOS // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _55
s1 s5 XCPU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr _55 signature validator_pubkey
CHKSIGNS // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr _56
IFNOTJMP:<{ // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr
s6 s8 XCHG
8 BLKDROP // s_addr query_id
1 PUSHINT // s_addr query_id _57=1
return_stake INLINECALLDICT
}> // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr
OVER
16 PUSHPOW2 // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr max_factor _59=65536
LESS // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr _60
IFJMP:<{ // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr
s6 s8 XCHG
8 BLKDROP // s_addr query_id
6 PUSHINT // s_addr query_id _61=6
return_stake INLINECALLDICT
}> // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr
s0 s7 XCHG // s_addr msg_value adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect
unpack_elect INLINECALLDICT // s_addr msg_value adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor _144 _145 _146 _147 _148 _149 _150
NIP // s_addr msg_value adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members finished
s0 s13 XCHG
1000000000 PUSHINT // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members msg_value _71=1000000000
SUB // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members msg_value
DUP // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members msg_value msg_value
12 LSHIFT# // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members msg_value _74
s3 PUSH // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members msg_value _74 total_stake
LESS // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members msg_value _75
IFJMP:<{ // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members msg_value
s11 s13 XCHG
13 BLKDROP // s_addr query_id
2 PUSHINT // s_addr query_id _76=2
return_stake INLINECALLDICT
}> // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members msg_value
s2 s2 XCPU // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake msg_value members total_stake msg_value
ADD // s_addr finished adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake msg_value members total_stake
s7 s5 XCPU // s_addr finished adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value members stake_at elect_at
NEQ // s_addr finished adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value members _79
IFJMP:<{ // s_addr finished adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value members
s10 s12 XCHG
12 BLKDROP // s_addr query_id
3 PUSHINT // s_addr query_id _80=3
return_stake INLINECALLDICT
}> // s_addr finished adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value members
s0 s12 XCHG // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value finished
IFJMP:<{ // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value
s9 s11 XCHG
11 BLKDROP // s_addr query_id
0 PUSHINT // s_addr query_id _82=0
return_stake INLINECALLDICT
}> // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value
s6 s11 PUSH2
8 PUSHPOW2 // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value validator_pubkey members _86=256
DICTUGET
NULLSWAPIFNOT // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value mem found
DUP // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value mem found found
IF:<{ // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value mem found
DROP // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value mem
LDGRAMS // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value _88 mem
-ROT // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake mem msg_value _88
ADD // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake mem msg_value
SWAP // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value mem
64 LDU // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value _156 _155
NIP // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value mem
256 LDU // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value _158 _157
DROP // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value _94
s8 s(-1) PUXC // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value src_addr _94
NEQ // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value found
}>ELSE<{
NIP // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value found
}>
IFJMP:<{ // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value
s9 s11 XCHG
11 BLKDROP // s_addr query_id
4 PUSHINT // s_addr query_id _98=4
return_stake INLINECALLDICT
}> // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value
s0 s1 PUSH2 // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value msg_value min_stake
LESS // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value _100
IFJMP:<{ // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value
s9 s11 XCHG
11 BLKDROP // s_addr query_id
5 PUSHINT // s_addr query_id _101=5
return_stake INLINECALLDICT
}> // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value
DUP // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value msg_value
44 THROWIFNOT
ACCEPT
NOW // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake msg_value _107
NEWC
ROT // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake _107 _108 msg_value
STGRAMS // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake _107 _109
32 STU // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor elect_at elect_close min_stake _111
s1 s4 XCHG // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake min_stake elect_at elect_close max_factor _111
32 STU // s_addr members adnl_addr query_id ds src_addr validator_pubkey total_stake min_stake elect_at elect_close _113
s1 s6 XCHG // s_addr members adnl_addr query_id ds elect_close validator_pubkey total_stake min_stake elect_at src_addr _113
256 STU // s_addr members adnl_addr query_id ds elect_close validator_pubkey total_stake min_stake elect_at _115
s1 s8 XCHG // s_addr members elect_at query_id ds elect_close validator_pubkey total_stake min_stake adnl_addr _115
256 STU // s_addr members elect_at query_id ds elect_close validator_pubkey total_stake min_stake _117
s0 s3 s8 XCHG3
8 PUSHPOW2 // s_addr total_stake elect_at query_id ds elect_close min_stake _117 validator_pubkey members _118=256
DICTUSETB // s_addr total_stake elect_at query_id ds elect_close min_stake members
s4 s5 XCHG
s1 s3 s0 XCHG3
s1 s6 XCHG
FALSE
FALSE // s_addr ds query_id elect_at elect_close min_stake total_stake members _120 _121
pack_elect INLINECALLDICT // s_addr ds query_id elect
NEWC // s_addr ds query_id elect _123
STDICT // s_addr ds query_id _124
ROT // s_addr query_id _124 ds
STSLICER // s_addr query_id _125
ENDC // s_addr query_id _126
c4 POP
DUP // s_addr query_id query_id
IFJMP:<{ // s_addr query_id
0 PUSHINT // s_addr query_id _128=0
send_confirmation INLINECALLDICT
}> // s_addr query_id
2DROP //
}>
unfreeze_without_bonuses PROCREF:<{
// credits freeze_dict tot_stakes
0 PUSHINT // credits freeze_dict tot_stakes _5=0
DUP // credits freeze_dict tot_stakes total=0 recovered=0
-1 PUSHINT // credits freeze_dict tot_stakes total=0 recovered=0 pubkey=-1
UNTIL:<{
s4 PUSH
8 PUSHPOW2 // credits freeze_dict tot_stakes total recovered pubkey freeze_dict _10=256
DICTUGETNEXT
NULLSWAPIFNOT2 // credits freeze_dict tot_stakes total recovered cs pubkey f
DUP // credits freeze_dict tot_stakes total recovered cs pubkey f f
IF:<{ // credits freeze_dict tot_stakes total recovered cs pubkey f
s0 s2 XCHG // credits freeze_dict tot_stakes total recovered f pubkey cs
256 LDU // credits freeze_dict tot_stakes total recovered f pubkey _16 cs
64 LDU // credits freeze_dict tot_stakes total recovered f pubkey _16 _42 _41
NIP // credits freeze_dict tot_stakes total recovered f pubkey _16 cs
LDGRAMS // credits freeze_dict tot_stakes total recovered f pubkey _16 _22 cs
1 LDI // credits freeze_dict tot_stakes total recovered f pubkey addr stake banned cs
ENDS
IF:<{ // credits freeze_dict tot_stakes total recovered f pubkey addr stake
NIP // credits freeze_dict tot_stakes total recovered f pubkey stake
s3 s3 XCPU // credits freeze_dict tot_stakes total stake f pubkey recovered stake
ADD // credits freeze_dict tot_stakes total stake f pubkey recovered
}>ELSE<{ // credits freeze_dict tot_stakes total recovered f pubkey addr stake
s8 s8 s8 XC2PU // stake freeze_dict tot_stakes total recovered f pubkey credits addr stake
~credit_to INLINECALLDICT // stake freeze_dict tot_stakes total recovered f pubkey credits
s0 s7 XCHG
s0 s3 XCHG // credits freeze_dict tot_stakes total stake f pubkey recovered
}>
s4 s3 XCHG2 // credits freeze_dict tot_stakes pubkey recovered f total stake
ADD // credits freeze_dict tot_stakes pubkey recovered f total
s0 s3 XCHG // credits freeze_dict tot_stakes total recovered f pubkey
}>ELSE<{
s2 POP // credits freeze_dict tot_stakes total recovered f pubkey
}>
SWAP // credits freeze_dict tot_stakes total recovered pubkey f
NOT // credits freeze_dict tot_stakes total recovered pubkey _32
}> // credits freeze_dict tot_stakes total recovered pubkey
DROP
s3 POP // credits recovered tot_stakes total
SWAP // credits recovered total tot_stakes
EQUAL // credits recovered _34
59 THROWIFNOT
}>
unfreeze_with_bonuses PROCREF:<{
// credits freeze_dict tot_stakes tot_bonuses
0 PUSHINT // credits freeze_dict tot_stakes tot_bonuses _7=0
s0 s0 PUSH2 // credits freeze_dict tot_stakes tot_bonuses total=0 returned_bonuses=0 recovered=0
-1 PUSHINT // credits freeze_dict tot_stakes tot_bonuses total=0 returned_bonuses=0 recovered=0 pubkey=-1
UNTIL:<{
s6 PUSH
8 PUSHPOW2 // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered pubkey freeze_dict _12=256
DICTUGETNEXT
NULLSWAPIFNOT2 // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered cs pubkey f
DUP // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered cs pubkey f f
IF:<{ // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered cs pubkey f
s0 s2 XCHG // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey cs
256 LDU // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey _18 cs
64 LDU // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey _18 _52 _51
NIP // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey _18 cs
LDGRAMS // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey _18 _24 cs
1 LDI // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake banned cs
ENDS
IF:<{ // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake
NIP // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey stake
s3 s3 XCPU // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses stake f pubkey recovered stake
ADD // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses stake f pubkey recovered
}>ELSE<{ // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake
s7 s0 s8 PUSH3 // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake tot_bonuses stake tot_stakes
MULDIV // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake bonus
s6 s6 XCPU // credits freeze_dict tot_stakes tot_bonuses total bonus recovered f pubkey addr stake returned_bonuses bonus
ADD // credits freeze_dict tot_stakes tot_bonuses total bonus recovered f pubkey addr stake returned_bonuses
s1 s6 PUXC // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake stake bonus
ADD // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake _35
s11 s11 s0 XCHG3 // stake freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey credits addr _35
~credit_to INLINECALLDICT // stake freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey credits
s0 s9 XCHG
s0 s3 XCHG // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses stake f pubkey recovered
}>
s5 s3 XCHG2 // credits freeze_dict tot_stakes tot_bonuses pubkey returned_bonuses recovered f total stake
ADD // credits freeze_dict tot_stakes tot_bonuses pubkey returned_bonuses recovered f total
s0 s4 XCHG // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey
}>ELSE<{
s2 POP // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey
}>
SWAP // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered pubkey f
NOT // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered pubkey _38
}> // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered pubkey
DROP
s5 POP // credits recovered tot_stakes tot_bonuses total returned_bonuses
s0 s3 XCHG // credits recovered returned_bonuses tot_bonuses total tot_stakes
EQUAL // credits recovered returned_bonuses tot_bonuses _40
s2 s1 PUSH2 // credits recovered returned_bonuses tot_bonuses _40 returned_bonuses tot_bonuses
LEQ // credits recovered returned_bonuses tot_bonuses _40 _41
AND // credits recovered returned_bonuses tot_bonuses _42
59 THROWIFNOT
s1 s2 XCHG // credits returned_bonuses recovered tot_bonuses
ADD // credits returned_bonuses _44
SWAP // credits _44 returned_bonuses
SUB // credits _45
}>
stakes_sum PROCREF:<{
// frozen_dict
0 PUSHINT // frozen_dict total=0
-1 PUSHINT // frozen_dict total=0 pubkey=-1
UNTIL:<{
s2 PUSH
8 PUSHPOW2 // frozen_dict total pubkey frozen_dict _7=256
DICTUGETNEXT
NULLSWAPIFNOT2 // frozen_dict total cs pubkey f
DUP // frozen_dict total cs pubkey f f
IF:<{ // frozen_dict total cs pubkey f
s0 s2 XCHG
320 PUSHINT // frozen_dict total f pubkey cs _12
SDSKIPFIRST // frozen_dict total f pubkey cs
LDGRAMS // frozen_dict total f pubkey _22 _21
DROP // frozen_dict total f pubkey _14
s1 s3 XCHG // frozen_dict pubkey f total _14
ADD // frozen_dict pubkey f total
s0 s2 XCHG // frozen_dict total f pubkey
}>ELSE<{
s2 POP // frozen_dict total f pubkey
}>
SWAP // frozen_dict total pubkey f
NOT // frozen_dict total pubkey _17
}> // frozen_dict total pubkey
DROP
NIP // total
}>
unfreeze_all PROCREF:<{
// credits past_elections elect_id
SWAP
32 PUSHINT // credits elect_id past_elections _6=32
DICTUDELGET
NULLSWAPIFNOT // credits past_elections fs f
IFNOTJMP:<{ // credits past_elections fs
DROP // credits past_elections
0 PUSHINT // credits past_elections _8=0
}> // credits past_elections fs
unpack_past_election INLINECALLDICT // credits past_elections _30 _31 _32 _33 _34 _35 _36
DROP
3 3 BLKDROP2 // credits past_elections fdict tot_stakes bonuses
DUP // credits past_elections fdict tot_stakes bonuses bonuses
0 GTINT // credits past_elections fdict tot_stakes bonuses _19
IF:<{ // credits past_elections fdict tot_stakes bonuses
s3 s4 XCHG // past_elections credits fdict tot_stakes bonuses
unfreeze_with_bonuses INLINECALLDICT // past_elections credits _20
}>ELSE<{ // credits past_elections fdict tot_stakes bonuses
DROP // credits past_elections fdict tot_stakes
s2 s3 XCHG // past_elections credits fdict tot_stakes
unfreeze_without_bonuses INLINECALLDICT // past_elections credits _20
}> // past_elections credits unused_prizes
s1 s2 XCHG // credits past_elections unused_prizes
}>
config_set_confirmed PROCREF:<{
// s_addr cs query_id ok
s2 POP // s_addr ok query_id
s0 s2 XCHG // query_id ok s_addr
REWRITESTDADDR // query_id ok src_wc src_addr
0 PUSHINT // query_id ok src_wc src_addr _8=0
CONFIGOPTPARAM // query_id ok src_wc src_addr _9
CTOS // query_id ok src_wc src_addr _10
256 PLDU // query_id ok src_wc src_addr config_addr
c4 PUSH // query_id ok src_wc src_addr config_addr _14
CTOS // query_id ok src_wc src_addr config_addr ds
LDDICT // query_id ok src_wc src_addr config_addr elect ds
s0 s4 XCHG // query_id ok ds src_addr config_addr elect src_wc
INC // query_id ok ds src_addr config_addr elect _20
2SWAP // query_id ok ds elect _20 src_addr config_addr
NEQ // query_id ok ds elect _20 _21
OR // query_id ok ds elect _22
OVER // query_id ok ds elect _22 elect
ISNULL // query_id ok ds elect _22 _23
OR // query_id ok ds elect _24
IFJMP:<{ // query_id ok ds elect
4 BLKDROP //
}> // query_id ok ds elect
unpack_elect INLINECALLDICT // query_id ok ds _63 _64 _65 _66 _67 _68 _69
5 1 BLKDROP2 // query_id ok ds elect_at finished
s1 s4 PUXC // finished ok ds elect_at elect_at query_id
NEQ // finished ok ds elect_at _33
s0 s4 XCHG // _33 ok ds elect_at finished
NOT // _33 ok ds elect_at _34
s1 s4 XCHG // elect_at ok ds _33 _34
OR // elect_at ok ds _35
IFJMP:<{ // elect_at ok ds
3 BLKDROP //
}> // elect_at ok ds
ACCEPT
SWAP // elect_at ds ok
IFNOT:<{ // elect_at ds
LDDICT // elect_at _40 ds
LDDICT // elect_at _40 _42 ds
LDGRAMS // elect_at credits past_elections grams ds
s3 s3 s4 XCHG3 // ds grams credits past_elections elect_at
unfreeze_all INLINECALLDICT // ds grams credits past_elections unused_prizes
FALSE // ds grams credits past_elections unused_prizes _48
NEWC // ds grams credits past_elections unused_prizes _48 _49
1 STI // ds grams credits past_elections unused_prizes _51
s1 s3 XCHG // ds grams unused_prizes past_elections credits _51
STDICT // ds grams unused_prizes past_elections _52
STDICT // ds grams unused_prizes _53
-ROT // ds _53 grams unused_prizes
ADD // ds _53 _54
STGRAMS // ds _55
SWAP // _55 ds
STSLICER // _56
ENDC // _57
c4 POP
}>ELSE<{
2DROP //
}>
}>
process_simple_transfer PROCREF:<{
// s_addr msg_value
load_data INLINECALLDICT // s_addr msg_value elect credits past_elections grams active_id active_hash
s0 s7 XCHG // active_hash msg_value elect credits past_elections grams active_id s_addr
REWRITESTDADDR // active_hash msg_value elect credits past_elections grams active_id src_wc src_addr
SWAP // active_hash msg_value elect credits past_elections grams active_id src_addr src_wc
INC // active_hash msg_value elect credits past_elections grams active_id src_addr _13
OR // active_hash msg_value elect credits past_elections grams active_id _14
OVER // active_hash msg_value elect credits past_elections grams active_id _14 active_id
0 EQINT // active_hash msg_value elect credits past_elections grams active_id _14 _16
OR // active_hash msg_value elect credits past_elections grams active_id _17
IFJMP:<{ // active_hash msg_value elect credits past_elections grams active_id
s0 s5 XCHG // active_hash active_id elect credits past_elections grams msg_value
ADD // active_hash active_id elect credits past_elections grams
s3 s5 XCHG
2 3 BLKSWAP // elect credits past_elections grams active_id active_hash
store_data INLINECALLDICT
}> // active_hash msg_value elect credits past_elections grams active_id
s0 s2 PUSH2
32 PUSHINT // active_hash msg_value elect credits past_elections grams active_id active_id past_elections _22=32
DICTUGET
NULLSWAPIFNOT // active_hash msg_value elect credits past_elections grams active_id fs f
IF:<{ // active_hash msg_value elect credits past_elections grams active_id fs
unpack_past_election INLINECALLDICT // active_hash msg_value elect credits past_elections grams active_id unfreeze_at stake_held hash dict total_stake bonuses complaints
s0 s12 XCHG // active_hash complaints elect credits past_elections grams active_id unfreeze_at stake_held hash dict total_stake bonuses msg_value
ADD // active_hash complaints elect credits past_elections grams active_id unfreeze_at stake_held hash dict total_stake bonuses
6 ROLL
s0 s11 XCHG // active_hash active_id elect credits past_elections grams unfreeze_at stake_held hash dict total_stake bonuses complaints
pack_past_election INLINECALLDICT // active_hash active_id elect credits past_elections grams _35
s0 s5 s2 XCPUXC
32 PUSHINT // active_hash active_id elect credits grams _35 active_id past_elections _36=32
DICTUSETB // active_hash active_id elect credits grams past_elections
}>ELSE<{ // active_hash msg_value elect credits past_elections grams active_id fs
DROP // active_hash msg_value elect credits past_elections grams active_id
s0 s5 XCHG // active_hash active_id elect credits past_elections grams msg_value
ADD // active_hash active_id elect credits past_elections grams
SWAP // active_hash active_id elect credits grams past_elections
}>
s3 s5 XCHG
s1 s4 s3 XCHG3 // elect credits past_elections grams active_id active_hash
store_data INLINECALLDICT
}>
recover_stake PROCREF:<{
// op s_addr cs query_id
NIP // op s_addr query_id
OVER // op s_addr query_id s_addr
REWRITESTDADDR // op s_addr query_id src_wc src_addr
SWAP // op s_addr query_id src_addr src_wc
INC // op s_addr query_id src_addr _8
IFJMP:<{ // op s_addr query_id src_addr
DROP // op s_addr query_id
4294967294 PUSHINT // op s_addr query_id _9=4294967294
s0 s1 s3 XCHG3
0 PUSHINT
64 PUSHINT // s_addr _9=4294967294 query_id op _10=0 _11=64
send_message_back INLINECALLDICT
}> // op s_addr query_id src_addr
c4 PUSH // op s_addr query_id src_addr _14
CTOS // op s_addr query_id src_addr ds
LDDICT // op s_addr query_id src_addr _18 ds
LDDICT // op s_addr query_id src_addr elect credits ds
s3 s3 XCHG2
8 PUSHPOW2 // op s_addr query_id ds elect src_addr credits _25=256
DICTUDELGET
NULLSWAPIFNOT // op s_addr query_id ds elect credits cs f
IFNOTJMP:<{ // op s_addr query_id ds elect credits cs
4 BLKDROP // op s_addr query_id
4294967294 PUSHINT // op s_addr query_id _27=4294967294
s0 s1 s3 XCHG3
0 PUSHINT
64 PUSHINT // s_addr _27=4294967294 query_id op _28=0 _29=64
send_message_back INLINECALLDICT
}> // op s_addr query_id ds elect credits cs
s6 POP // cs s_addr query_id ds elect credits
s0 s5 XCHG // credits s_addr query_id ds elect cs
LDGRAMS // credits s_addr query_id ds elect amount cs
ENDS
SWAP
NEWC // credits s_addr query_id ds amount elect _35
STDICT // credits s_addr query_id ds amount _36
s1 s5 XCHG // amount s_addr query_id ds credits _36
STDICT // amount s_addr query_id ds _37
SWAP // amount s_addr query_id _37 ds
STSLICER // amount s_addr query_id _38
ENDC // amount s_addr query_id _39
c4 POP
4184830756 PUSHINT // amount s_addr query_id _41=4184830756
0 PUSHINT // amount s_addr query_id _41=4184830756 _42=0
24 PUSHINT // amount s_addr query_id _41=4184830756 _42=0 _43=24
NEWC // amount s_addr query_id _41=4184830756 _42=0 _43=24 _44
6 STU // amount s_addr query_id _41=4184830756 _42=0 _46
s0 s4 XCHG2 // amount _42=0 query_id _41=4184830756 _46 s_addr
STSLICER // amount _42=0 query_id _41=4184830756 _47
s0 s4 XCHG2 // _41=4184830756 _42=0 query_id _47 amount
STGRAMS // _41=4184830756 _42=0 query_id _48
s1 s2 XCHG // _41=4184830756 query_id _42=0 _48
107 STU // _41=4184830756 query_id _62
s1 s2 XCHG // query_id _41=4184830756 _62
32 STU // query_id _64
64 STU // _66
ENDC // _67
64 PUSHINT // _67 _68=64
SENDRAWMSG
}>
after_code_upgrade PROC:<{
// s_addr cs query_id
NIP // s_addr query_id
1313042276 PUSHINT // s_addr query_id op=1313042276
3460525924 PUSHINT // s_addr query_id op=1313042276 _5=3460525924
-ROT
0 PUSHINT
64 PUSHINT // s_addr _5=3460525924 query_id op=1313042276 _6=0 _7=64
send_message_back INLINECALLDICT
}>
upgrade_code PROCREF:<{
// s_addr cs query_id
0 PUSHINT // s_addr cs query_id _4=0
CONFIGOPTPARAM // s_addr cs query_id c_addr
DUP // s_addr cs query_id c_addr c_addr
ISNULL // s_addr cs query_id c_addr _6
IFJMP:<{ // s_addr cs query_id c_addr
4 BLKDROP //
FALSE // _7
}> // s_addr cs query_id c_addr
CTOS // s_addr cs query_id _9
256 PLDU // s_addr cs query_id config_addr
s3 PUSH // s_addr cs query_id config_addr s_addr
REWRITESTDADDR // s_addr cs query_id config_addr src_wc src_addr
SWAP // s_addr cs query_id config_addr src_addr src_wc
INC // s_addr cs query_id config_addr src_addr _16
s0 s2 XCHG // s_addr cs query_id _16 src_addr config_addr
NEQ // s_addr cs query_id _16 _17
OR // s_addr cs query_id _18
IFJMP:<{ // s_addr cs query_id
3 BLKDROP //
FALSE // _19
}> // s_addr cs query_id
ACCEPT
SWAP // s_addr query_id cs
LDREF // s_addr query_id code cs
OVER // s_addr query_id code cs code
SETCODE
DUP // s_addr query_id code cs cs
SEMPTY // s_addr query_id code cs _25
IFNOT:<{ // s_addr query_id code cs
SWAP // s_addr query_id cs code
CTOS // s_addr query_id cs _26
BLESS // s_addr query_id cs _27
c3 POP
SWAP // s_addr cs query_id
after_code_upgrade CALLDICT
0 THROW
}>ELSE<{
4 BLKDROP //
}>
TRUE // _32
}>
register_complaint PROC:<{
// s_addr complaint msg_value
s0 s2 XCHG // msg_value complaint s_addr
REWRITESTDADDR // msg_value complaint src_wc src_addr
SWAP // msg_value complaint src_addr src_wc
INC // msg_value complaint src_addr _7
IFJMP:<{ // msg_value complaint src_addr
3 BLKDROP //
-1 PUSHINT // _8=-1
}> // msg_value complaint src_addr
OVER // msg_value complaint src_addr complaint
SDEPTH // msg_value complaint src_addr _9
7 PUSHPOW2 // msg_value complaint src_addr _9 _10=128
GEQ // msg_value complaint src_addr _11
IFJMP:<{ // msg_value complaint src_addr
3 BLKDROP //
-3 PUSHINT // _12=-3
}> // msg_value complaint src_addr
load_data INLINECALLDICT // msg_value complaint src_addr _131 _132 _133 _134 _135 _136
s3 s5 XCHG
5 BLKDROP // msg_value complaint src_addr past_elections
s0 s2 XCHG // msg_value past_elections src_addr complaint
32 LDU // msg_value past_elections src_addr election_id complaint
s1 s3 PUSH2
32 PUSHINT // msg_value past_elections src_addr election_id complaint election_id past_elections _26=32
DICTUGET
NULLSWAPIFNOT // msg_value past_elections src_addr election_id complaint fs f
IFNOTJMP:<{ // msg_value past_elections src_addr election_id complaint fs
6 BLKDROP //
-2 PUSHINT // _28=-2
}> // msg_value past_elections src_addr election_id complaint fs
DUP // msg_value past_elections src_addr election_id complaint fs fs
32 PLDU // msg_value past_elections src_addr election_id complaint fs _31
NOW // msg_value past_elections src_addr election_id complaint fs _31 _32
SUB // msg_value past_elections src_addr election_id complaint fs expire_in
DUP // msg_value past_elections src_addr election_id complaint fs expire_in expire_in
1 LESSINT // msg_value past_elections src_addr election_id complaint fs expire_in _35
IFJMP:<{ // msg_value past_elections src_addr election_id complaint fs expire_in
7 BLKDROP //
-4 PUSHINT // _36=-4
}> // msg_value past_elections src_addr election_id complaint fs expire_in
s2 PUSH // msg_value past_elections src_addr election_id complaint fs expire_in complaint
unpack_complaint INLINECALLDICT // msg_value past_elections src_addr election_id complaint fs expire_in _141 _142 _143 _144 _145 _146 _147 _148
2 2 BLKDROP2
s3 POP // msg_value past_elections reward_addr election_id complaint fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine
NOW // msg_value past_elections reward_addr election_id complaint fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at
get_complaint_prices INLINECALLDICT // msg_value past_elections reward_addr election_id complaint fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit bit_price cell_price
s0 s11 XCHG
12 PUSHPOW2 // msg_value past_elections reward_addr election_id cell_price fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit bit_price complaint _54=4096
SDATASIZE // msg_value past_elections reward_addr election_id cell_price fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit bit_price _152 _153 _154
s2 POP // msg_value past_elections reward_addr election_id cell_price fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit bit_price refs bits
10 PUSHPOW2 // msg_value past_elections reward_addr election_id cell_price fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit bit_price refs bits _57=1024
ADD // msg_value past_elections reward_addr election_id cell_price fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit bit_price refs _58
ROT // msg_value past_elections reward_addr election_id cell_price fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit refs _58 bit_price
MUL // msg_value past_elections reward_addr election_id cell_price fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit refs _59
SWAP // msg_value past_elections reward_addr election_id cell_price fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit _59 refs
2 ADDCONST // msg_value past_elections reward_addr election_id cell_price fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit _59 _61
s0 s11 XCHG2 // msg_value past_elections reward_addr election_id _59 fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit _61 cell_price
MUL // msg_value past_elections reward_addr election_id _59 fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at deposit _62
s1 s10 XCHG // msg_value past_elections reward_addr election_id deposit fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at _59 _62
ADD // msg_value past_elections reward_addr election_id deposit fs expire_in validator_pubkey description suggested_fine_part severity suggested_fine created_at pps
s0 s7 XCHG2 // msg_value past_elections reward_addr election_id deposit fs created_at validator_pubkey description suggested_fine_part severity suggested_fine pps expire_in
MUL // msg_value past_elections reward_addr election_id deposit fs created_at validator_pubkey description suggested_fine_part severity suggested_fine _64
s0 s8 XCHG2 // msg_value past_elections reward_addr election_id suggested_fine fs created_at validator_pubkey description suggested_fine_part severity _64 deposit
ADD // msg_value past_elections reward_addr election_id suggested_fine fs created_at validator_pubkey description suggested_fine_part severity paid
DUP
30 PUSHPOW2 // msg_value past_elections reward_addr election_id suggested_fine fs created_at validator_pubkey description suggested_fine_part severity paid paid _68
ADD // msg_value past_elections reward_addr election_id suggested_fine fs created_at validator_pubkey description suggested_fine_part severity paid _69
s1 s12 XCHG // paid past_elections reward_addr election_id suggested_fine fs created_at validator_pubkey description suggested_fine_part severity msg_value _69
LESS // paid past_elections reward_addr election_id suggested_fine fs created_at validator_pubkey description suggested_fine_part severity _70
IFJMP:<{ // paid past_elections reward_addr election_id suggested_fine fs created_at validator_pubkey description suggested_fine_part severity
11 BLKDROP //
-5 PUSHINT // _71=-5
}> // paid past_elections reward_addr election_id suggested_fine fs created_at validator_pubkey description suggested_fine_part severity
s4 s0 s3 XC2PU
s9 s11 s7 XCPU2
s7 PUSH // paid past_elections validator_pubkey election_id suggested_fine fs suggested_fine_part validator_pubkey description created_at severity reward_addr paid suggested_fine suggested_fine_part
pack_complaint INLINECALLDICT // paid past_elections validator_pubkey election_id suggested_fine fs suggested_fine_part _73
ENDC // paid past_elections validator_pubkey election_id suggested_fine fs suggested_fine_part complaint
s0 s2 XCHG // paid past_elections validator_pubkey election_id suggested_fine complaint suggested_fine_part fs
unpack_past_election INLINECALLDICT // paid past_elections validator_pubkey election_id suggested_fine complaint suggested_fine_part unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses complaints
s11 s3 XCPU
8 PUSHPOW2 // paid past_elections complaints election_id suggested_fine complaint suggested_fine_part unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses validator_pubkey frozen_dict _85=256
DICTUGET
NULLSWAPIFNOT // paid past_elections complaints election_id suggested_fine complaint suggested_fine_part unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses fs f
IFNOTJMP:<{ // paid past_elections complaints election_id suggested_fine complaint suggested_fine_part unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses fs
14 BLKDROP //
-6 PUSHINT // _87=-6
}> // paid past_elections complaints election_id suggested_fine complaint suggested_fine_part unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses fs
320 PUSHINT // paid past_elections complaints election_id suggested_fine complaint suggested_fine_part unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses fs _91
SDSKIPFIRST // paid past_elections complaints election_id suggested_fine complaint suggested_fine_part unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses fs
LDGRAMS // paid past_elections complaints election_id suggested_fine complaint suggested_fine_part unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses _165 _164
DROP // paid past_elections complaints election_id suggested_fine complaint suggested_fine_part unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses validator_stake
s0 s7 PUXC // paid past_elections complaints election_id suggested_fine complaint validator_stake unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses validator_stake suggested_fine_part
32 MULRSHIFT# // paid past_elections complaints election_id suggested_fine complaint validator_stake unfreeze_at stake_held vset_hash frozen_dict total_stake bonuses _100
s1 s9 XCHG // paid past_elections complaints election_id bonuses complaint validator_stake unfreeze_at stake_held vset_hash frozen_dict total_stake suggested_fine _100
ADD // paid past_elections complaints election_id bonuses complaint validator_stake unfreeze_at stake_held vset_hash frozen_dict total_stake fine