BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • KT1PBb8...1sga
Delegatable
operations (4)Storage Code Interact Tokens Fork Views Statistics Details
Latest
​x
979
 
1
{ parameter (or
2
              (or
3
                (or (pair %ban_baker (key_hash %baker) (nat %ban_period))
4
                    (address %claim_baker_fund))
5
                (or (unit %default) (unit %fill)))
6
              (or
7
                (or (pair %pour_out (contract %receiver unit) (nat %amt))
8
                    (pair %pour_over (address %bucket) (nat %amt)))
9
                (or
10
                  (pair %vote (address %voter) (key_hash %candidate)
11
                              (bool %execute_voting)
12
                              (nat %votes))
13
                  (pair %withdraw_rewards (contract %receiver unit) (address %user))))) ;
14
  storage (pair
15
            (big_map %users address (pair (option %candidate key_hash) (nat %votes)))
16
            (big_map %bakers key_hash (pair (timestamp %ban_end_time) (nat %votes)))
17
            (big_map %users_rewards address (pair (nat %reward_f) (nat %reward_paid_f)))
18
            (key_hash %previous_delegated)
19
            (key_hash %current_delegated)
20
            (key_hash %next_candidate)
21
            (address %baker_registry)
22
            (address %dex_core)
23
            (nat %pair_id)
24
            (nat %next_reward)
25
            (nat %total_reward)
26
            (nat %reward_paid)
27
            (nat %reward_per_share)
28
            (nat %reward_per_block)
29
            (nat %last_update_level)
30
            (nat %collecting_period_end)
31
            (nat %total_supply)
32
            (nat %baker_fund)) ;
33
  code { PUSH string "406" ;
34
         PUSH string "412" ;
35
         PUSH key_hash 0x0098b9732c83017e938ba48cb91cf53e5f919dc844 ;
36
         PUSH nat 1000000000000000000 ;
37
         PUSH nat 0 ;
38
         PUSH timestamp 0 ;
39
         PAIR ;
40
         PUSH nat 0 ;
41
         NONE key_hash ;
42
         PAIR ;
43
         PUSH nat 0 ;
44
         PUSH nat 0 ;
45
         PAIR ;
46
         LAMBDA (pair timestamp nat) bool { NOW ; SWAP ; CAR ; COMPARE ; GT } ;
47
         LAMBDA
48
           (pair (pair nat string)
49
                 (pair (big_map address (pair (option key_hash) nat))
50
                       (big_map key_hash (pair timestamp nat))
51
                       (big_map address (pair nat nat))
52
                       key_hash
53
                       key_hash
54
                       key_hash
55
                       address
56
                       address
57
                       nat
58
                       nat
59
                       nat
60
                       nat
61
                       nat
62
                       nat
63
                       nat
64
                       nat
65
                       nat
66
                       nat))
67
           (pair (big_map address (pair (option key_hash) nat))
68
                 (big_map key_hash (pair timestamp nat))
69
                 (big_map address (pair nat nat))
70
                 key_hash
71
                 key_hash
72
                 key_hash
73
                 address
74
                 address
75
                 nat
76
                 nat
77
                 nat
78
                 nat
79
                 nat
80
                 nat
81
                 nat
82
                 nat
83
                 nat
84
                 nat)
85
           { UNPAIR ;
86
             UNPAIR ;
87
             DIG 2 ;
88
             PUSH nat 0 ;
89
             DUP 2 ;
90
             GET 33 ;
91
             COMPARE ;
92
             GT ;
93
             IF
94
               { DUP ;
95
                 GET 31 ;
96
                 LEVEL ;
97
                 COMPARE ;
98
                 GT ;
99
                 IF { DUP ; GET 31 } { LEVEL } ;
100
                 DUP 2 ;
101
                 GET 27 ;
102
                 DUP 3 ;
103
                 GET 29 ;
104
                 DIG 2 ;
105
                 SUB ;
106
                 ISNAT ;
107
                 IF_NONE { DUP 4 ; FAILWITH } {} ;
108
                 MUL ;
109
                 DUP 2 ;
110
                 DUP 3 ;
111
                 GET 33 ;
112
                 DIG 2 ;
113
                 EDIV ;
114
                 IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
115
                 CAR ;
116
                 DIG 2 ;
117
                 GET 25 ;
118
                 ADD ;
119
                 UPDATE 25 ;
120
                 DUP ;
121
                 GET 31 ;
122
                 LEVEL ;
123
                 COMPARE ;
124
                 GT ;
125
                 IF
126
                   { PUSH string "201" ;
127
                     DUP 2 ;
128
                     GET 15 ;
129
                     UNIT ;
130
                     VIEW "get_collecting_period" nat ;
131
                     IF_NONE { FAILWITH } { SWAP ; DROP } ;
132
                     DUP ;
133
                     PUSH nat 1 ;
134
                     DIG 2 ;
135
                     DUP 4 ;
136
                     GET 31 ;
137
                     LEVEL ;
138
                     SUB ;
139
                     ISNAT ;
140
                     IF_NONE { DUP 6 ; FAILWITH } {} ;
141
                     EDIV ;
142
                     IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
143
                     CAR ;
144
                     ADD ;
145
                     MUL ;
146
                     DUP 2 ;
147
                     DUP 2 ;
148
                     DIG 4 ;
149
                     DIG 4 ;
150
                     GET 19 ;
151
                     MUL ;
152
                     EDIV ;
153
                     IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
154
                     CAR ;
155
                     UPDATE 27 ;
156
                     DUP ;
157
                     GET 27 ;
158
                     DUP 2 ;
159
                     GET 31 ;
160
                     LEVEL ;
161
                     SUB ;
162
                     ISNAT ;
163
                     IF_NONE { DIG 3 ; FAILWITH } { DIG 4 ; DROP } ;
164
                     MUL ;
165
                     DUP 2 ;
166
                     DIG 3 ;
167
                     DIG 3 ;
168
                     GET 31 ;
169
                     ADD ;
170
                     UPDATE 31 ;
171
                     DUP ;
172
                     DUP 2 ;
173
                     GET 33 ;
174
                     DIG 3 ;
175
                     EDIV ;
176
                     IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
177
                     CAR ;
178
                     DIG 2 ;
179
                     GET 25 ;
180
                     ADD ;
181
                     UPDATE 25 ;
182
                     UNIT ;
183
                     SWAP ;
184
                     PUSH nat 0 ;
185
                     UPDATE 19 }
186
                   { SWAP ; DIG 2 ; DROP 2 ; UNIT ; SWAP } }
187
               { SWAP ; DIG 2 ; DROP 2 ; UNIT ; SWAP } ;
188
             SWAP ;
189
             DROP ;
190
             LEVEL ;
191
             UPDATE 29 } ;
192
         DUP 9 ;
193
         DUP 7 ;
194
         PAIR ;
195
         APPLY ;
196
         LAMBDA
197
           (pair (pair (pair nat nat) string)
198
                 (pair (pair address nat) nat
199
                       (big_map address (pair (option key_hash) nat))
200
                       (big_map key_hash (pair timestamp nat))
201
                       (big_map address (pair nat nat))
202
                       key_hash
203
                       key_hash
204
                       key_hash
205
                       address
206
                       address
207
                       nat
208
                       nat
209
                       nat
210
                       nat
211
                       nat
212
                       nat
213
                       nat
214
                       nat
215
                       nat
216
                       nat))
217
           (pair (big_map address (pair (option key_hash) nat))
218
                 (big_map key_hash (pair timestamp nat))
219
                 (big_map address (pair nat nat))
220
                 key_hash
221
                 key_hash
222
                 key_hash
223
                 address
224
                 address
225
                 nat
226
                 nat
227
                 nat
228
                 nat
229
                 nat
230
                 nat
231
                 nat
232
                 nat
233
                 nat
234
                 nat)
235
           { UNPAIR ;
236
             UNPAIR ;
237
             DIG 2 ;
238
             UNPAIR ;
239
             UNPAIR ;
240
             DIG 2 ;
241
             UNPAIR ;
242
             DUP 2 ;
243
             GET 5 ;
244
             DUP 4 ;
245
             GET ;
246
             IF_NONE { DIG 4 } { DIG 5 ; DROP } ;
247
             DUP 3 ;
248
             GET 25 ;
249
             DIG 5 ;
250
             MUL ;
251
             DUP 2 ;
252
             DUP 3 ;
253
             CDR ;
254
             DIG 2 ;
255
             SUB ;
256
             ISNAT ;
257
             IF_NONE { DIG 5 ; FAILWITH } { DIG 6 ; DROP } ;
258
             DIG 2 ;
259
             CAR ;
260
             ADD ;
261
             UPDATE 1 ;
262
             DUP 3 ;
263
             GET 25 ;
264
             DIG 2 ;
265
             MUL ;
266
             UPDATE 2 ;
267
             DUP 2 ;
268
             DIG 2 ;
269
             GET 5 ;
270
             DIG 2 ;
271
             DIG 3 ;
272
             SWAP ;
273
             SOME ;
274
             SWAP ;
275
             UPDATE ;
276
             UPDATE 5 } ;
277
         DUP 10 ;
278
         DUP 5 ;
279
         PAIR ;
280
         APPLY ;
281
         DIG 10 ;
282
         UNPAIR ;
283
         IF_LEFT
284
           { DIG 2 ;
285
             DIG 4 ;
286
             DIG 5 ;
287
             DIG 6 ;
288
             DIG 9 ;
289
             DROP 5 ;
290
             IF_LEFT
291
               { DIG 2 ;
292
                 DIG 4 ;
293
                 DIG 6 ;
294
                 DROP 3 ;
295
                 IF_LEFT
296
                   { DUP 2 ;
297
                     GET 15 ;
298
                     SENDER ;
299
                     COMPARE ;
300
                     EQ ;
301
                     PUSH string "403" ;
302
                     SWAP ;
303
                     IF { DROP } { FAILWITH } ;
304
                     DIG 3 ;
305
                     PUSH mutez 0 ;
306
                     AMOUNT ;
307
                     COMPARE ;
308
                     EQ ;
309
                     IF { DROP } { FAILWITH } ;
310
                     DUP 2 ;
311
                     GET 3 ;
312
                     DUP 2 ;
313
                     CAR ;
314
                     GET ;
315
                     IF_NONE { DIG 2 } { DIG 3 ; DROP } ;
316
                     DUP 2 ;
317
                     CDR ;
318
                     INT ;
319
                     NOW ;
320
                     ADD ;
321
                     UPDATE 1 ;
322
                     DUP 3 ;
323
                     DIG 3 ;
324
                     GET 3 ;
325
                     DIG 2 ;
326
                     DIG 3 ;
327
                     CAR ;
328
                     SWAP ;
329
                     SOME ;
330
                     SWAP ;
331
                     UPDATE ;
332
                     UPDATE 3 ;
333
                     NIL operation }
334
                   { DIG 2 ;
335
                     DROP ;
336
                     DUP 2 ;
337
                     GET 15 ;
338
                     SENDER ;
339
                     COMPARE ;
340
                     EQ ;
341
                     PUSH string "403" ;
342
                     SWAP ;
343
                     IF { DROP } { FAILWITH } ;
344
                     DIG 2 ;
345
                     PUSH mutez 0 ;
346
                     AMOUNT ;
347
                     COMPARE ;
348
                     EQ ;
349
                     IF { DROP } { FAILWITH } ;
350
                     DUP 2 ;
351
                     GET 34 ;
352
                     PUSH string "203" ;
353
                     PUSH nat 0 ;
354
                     DUP 3 ;
355
                     COMPARE ;
356
                     GT ;
357
                     IF { DROP } { FAILWITH } ;
358
                     DIG 2 ;
359
                     PUSH nat 0 ;
360
                     UPDATE 34 ;
361
                     NIL operation ;
362
                     DIG 2 ;
363
                     PUSH string "409" ;
364
                     DIG 4 ;
365
                     CONTRACT unit ;
366
                     IF_NONE { FAILWITH } { SWAP ; DROP } ;
367
                     PUSH mutez 1 ;
368
                     DIG 2 ;
369
                     MUL ;
370
                     UNIT ;
371
                     TRANSFER_TOKENS ;
372
                     CONS } }
373
               { DIG 3 ;
374
                 DIG 5 ;
375
                 DROP 2 ;
376
                 IF_LEFT
377
                   { DROP ;
378
                     PUSH mutez 1 ;
379
                     AMOUNT ;
380
                     EDIV ;
381
                     IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
382
                     CAR ;
383
                     DIG 3 ;
384
                     PUSH string "202" ;
385
                     DUP 4 ;
386
                     GET 15 ;
387
                     UNIT ;
388
                     VIEW "get_baker_rate" nat ;
389
                     IF_NONE { FAILWITH } { SWAP ; DROP } ;
390
                     DUP 3 ;
391
                     MUL ;
392
                     EDIV ;
393
                     IF_NONE
394
                       { PUSH string "408" ; FAILWITH }
395
                       { PUSH nat 0 ;
396
                         DUP 2 ;
397
                         CDR ;
398
                         COMPARE ;
399
                         GT ;
400
                         IF { PUSH nat 1 ; SWAP ; CAR ; ADD } { CAR } } ;
401
                     DUP 3 ;
402
                     DUP 2 ;
403
                     DIG 4 ;
404
                     GET 34 ;
405
                     ADD ;
406
                     UPDATE 34 ;
407
                     DUP ;
408
                     DIG 2 ;
409
                     DIG 3 ;
410
                     SUB ;
411
                     ISNAT ;
412
                     IF_NONE { DIG 3 ; FAILWITH } { DIG 4 ; DROP } ;
413
                     DIG 2 ;
414
                     GET 19 ;
415
                     ADD ;
416
                     UPDATE 19 ;
417
                     EXEC }
418
                   { DIG 2 ; DIG 3 ; DIG 4 ; DROP 4 } ;
419
                 NIL operation } }
420
           { IF_LEFT
421
               { DIG 2 ;
422
                 DIG 3 ;
423
                 DIG 4 ;
424
                 DIG 5 ;
425
                 DIG 6 ;
426
                 DIG 7 ;
427
                 DIG 8 ;
428
                 DIG 9 ;
429
                 DIG 11 ;
430
                 DROP 9 ;
431
                 IF_LEFT
432
                   { DUP 2 ;
433
                     GET 15 ;
434
                     SENDER ;
435
                     COMPARE ;
436
                     EQ ;
437
                     PUSH string "403" ;
438
                     SWAP ;
439
                     IF { DROP } { FAILWITH } ;
440
                     DIG 2 ;
441
                     PUSH mutez 0 ;
442
                     AMOUNT ;
443
                     COMPARE ;
444
                     EQ ;
445
                     IF { DROP } { FAILWITH } ;
446
                     SWAP ;
447
                     NIL operation ;
448
                     DUP 3 ;
449
                     CAR ;
450
                     PUSH mutez 1 ;
451
                     DIG 4 ;
452
                     CDR ;
453
                     MUL ;
454
                     UNIT ;
455
                     TRANSFER_TOKENS }
456
                   { DUP 2 ;
457
                     GET 15 ;
458
                     SENDER ;
459
                     COMPARE ;
460
                     EQ ;
461
                     PUSH string "403" ;
462
                     SWAP ;
463
                     IF { DROP } { FAILWITH } ;
464
                     DIG 2 ;
465
                     PUSH mutez 0 ;
466
                     AMOUNT ;
467
                     COMPARE ;
468
                     EQ ;
469
                     IF { DROP } { FAILWITH } ;
470
                     SWAP ;
471
                     NIL operation ;
472
                     DUP 3 ;
473
                     CAR ;
474
                     PUSH mutez 1 ;
475
                     DIG 4 ;
476
                     CDR ;
477
                     MUL ;
478
                     PUSH string "410" ;
479
                     DIG 2 ;
480
                     CONTRACT %fill unit ;
481
                     IF_NONE { FAILWITH } { SWAP ; DROP } ;
482
                     SWAP ;
483
                     UNIT ;
484
                     TRANSFER_TOKENS } ;
485
                 CONS }
486
               { IF_LEFT
487
                   { DIG 5 ;
488
                     DIG 8 ;
489
                     DROP 2 ;
490
                     DUP 2 ;
491
                     GET 15 ;
492
                     SENDER ;
493
                     COMPARE ;
494
                     EQ ;
495
                     PUSH string "403" ;
496
                     SWAP ;
497
                     IF { DROP } { FAILWITH } ;
498
                     DIG 8 ;
499
                     PUSH mutez 0 ;
500
                     AMOUNT ;
501
                     COMPARE ;
502
                     EQ ;
503
                     IF { DROP } { FAILWITH } ;
504
                     NIL operation ;
505
                     PUSH string "200" ;
506
                     DUP 4 ;
507
                     GET 13 ;
508
                     CONTRACT %validate key_hash ;
509
                     IF_NONE { FAILWITH } { SWAP ; DROP } ;
510
                     PUSH mutez 0 ;
511
                     DUP 4 ;
512
                     GET 3 ;
513
                     TRANSFER_TOKENS ;
514
                     CONS ;
515
                     DUP 3 ;
516
                     CAR ;
517
                     DUP 3 ;
518
                     CAR ;
519
                     GET ;
520
                     IF_NONE { DIG 6 } { DIG 7 ; DROP } ;
521
                     DIG 3 ;
522
                     DIG 5 ;
523
                     SWAP ;
524
                     EXEC ;
525
                     DUP 4 ;
526
                     GET 6 ;
527
                     PAIR ;
528
                     DUP 2 ;
529
                     CDR ;
530
                     DUP 5 ;
531
                     CAR ;
532
                     PAIR ;
533
                     PAIR ;
534
                     DIG 4 ;
535
                     SWAP ;
536
                     EXEC ;
537
                     DUP ;
538
                     DUP 3 ;
539
                     CDR ;
540
                     DIG 2 ;
541
                     GET 33 ;
542
                     SUB ;
543
                     ISNAT ;
544
                     IF_NONE { DUP 8 ; FAILWITH } {} ;
545
                     UPDATE 33 ;
546
                     DUP ;
547
                     DUP 5 ;
548
                     GET 6 ;
549
                     DIG 2 ;
550
                     GET 33 ;
551
                     ADD ;
552
                     UPDATE 33 ;
553
                     DUP 2 ;
554
                     CAR ;
555
                     IF_NONE
556
                       { DIG 7 ; DROP ; UNIT ; SWAP }
557
                       { DUP 2 ;
558
                         GET 3 ;
559
                         DUP 2 ;
560
                         GET ;
561
                         IF_NONE { DUP 7 } {} ;
562
                         DUP 4 ;
563
                         CDR ;
564
                         DUP 2 ;
565
                         CDR ;
566
                         SUB ;
567
                         ISNAT ;
568
                         IF_NONE { DIG 9 ; FAILWITH } { DIG 10 ; DROP } ;
569
                         UNIT ;
570
                         DUP 5 ;
571
                         DIG 5 ;
572
                         GET 3 ;
573
                         DIG 4 ;
574
                         DIG 4 ;
575
                         UPDATE 2 ;
576
                         DIG 4 ;
577
                         SWAP ;
578
                         SOME ;
579
                         SWAP ;
580
                         UPDATE ;
581
                         UPDATE 3 } ;
582
                     SWAP ;
583
                     DROP ;
584
                     DUP ;
585
                     GET 3 ;
586
                     DUP 5 ;
587
                     GET 3 ;
588
                     GET ;
589
                     IF_NONE { DUP 6 } {} ;
590
                     DUP 5 ;
591
                     GET 6 ;
592
                     DUP 2 ;
593
                     CDR ;
594
                     ADD ;
595
                     SWAP ;
596
                     DUP 2 ;
597
                     UPDATE 2 ;
598
                     DUP 3 ;
599
                     DIG 3 ;
600
                     GET 3 ;
601
                     DUP 3 ;
602
                     DUP 8 ;
603
                     GET 3 ;
604
                     SWAP ;
605
                     SOME ;
606
                     SWAP ;
607
                     UPDATE ;
608
                     UPDATE 3 ;
609
                     DIG 3 ;
610
                     DUP 6 ;
611
                     GET 6 ;
612
                     UPDATE 2 ;
613
                     PUSH nat 0 ;
614
                     DUP 2 ;
615
                     CDR ;
616
                     COMPARE ;
617
                     NEQ ;
618
                     IF
619
                       { UNIT ; SWAP ; DUP 7 ; GET 3 ; SOME ; UPDATE 1 }
620
                       { UNIT ; SWAP ; NONE key_hash ; UPDATE 1 } ;
621
                     SWAP ;
622
                     DROP ;
623
                     DUP 2 ;
624
                     DIG 2 ;
625
                     CAR ;
626
                     DIG 2 ;
627
                     DUP 7 ;
628
                     CAR ;
629
                     SWAP ;
630
                     SOME ;
631
                     SWAP ;
632
                     UPDATE ;
633
                     UPDATE 1 ;
634
                     DUP ;
635
                     GET 3 ;
636
                     DUP 2 ;
637
                     GET 9 ;
638
                     GET ;
639
                     IF_NONE { DUP 7 } {} ;
640
                     DUP 2 ;
641
                     GET 3 ;
642
                     DUP 3 ;
643
                     GET 11 ;
644
                     GET ;
645
                     IF_NONE { DUP 8 } {} ;
646
                     DUP 2 ;
647
                     CDR ;
648
                     DIG 5 ;
649
                     COMPARE ;
650
                     GT ;
651
                     IF
652
                       { SWAP ;
653
                         DIG 3 ;
654
                         DROP 3 ;
655
                         UNIT ;
656
                         DUP 2 ;
657
                         DIG 2 ;
658
                         GET 9 ;
659
                         UPDATE 11 ;
660
                         DUP 4 ;
661
                         GET 3 ;
662
                         UPDATE 9 }
663
                       { DUP 3 ;
664
                         GET 9 ;
665
                         DUP 7 ;
666
                         GET 3 ;
667
                         COMPARE ;
668
                         NEQ ;
669
                         DUP 2 ;
670
                         CDR ;
671
                         DIG 5 ;
672
                         CDR ;
673
                         COMPARE ;
674
                         GT ;
675
                         AND ;
676
                         IF
677
                           { DROP 2 ; UNIT ; SWAP ; DUP 4 ; GET 3 ; UPDATE 11 }
678
                           { SWAP ;
679
                             CDR ;
680
                             SWAP ;
681
                             CDR ;
682
                             COMPARE ;
683
                             GT ;
684
                             IF
685
                               { UNIT ; DUP 2 ; DUP 3 ; GET 11 ; UPDATE 9 ; DIG 2 ; GET 9 ; UPDATE 11 }
686
                               { UNIT ; SWAP } } } ;
687
                     SWAP ;
688
                     DROP ;
689
                     DIG 2 ;
690
                     GET 5 ;
691
                     IF
692
                       { DUP ;
693
                         GET 3 ;
694
                         DUP 2 ;
695
                         GET 11 ;
696
                         GET ;
697
                         IF_NONE { DUP 4 } {} ;
698
                         DUP 4 ;
699
                         SWAP ;
700
                         EXEC ;
701
                         DUP 2 ;
702
                         GET 3 ;
703
                         DUP 3 ;
704
                         GET 9 ;
705
                         GET ;
706
                         IF_NONE { DIG 4 } { DIG 5 ; DROP } ;
707
                         DIG 4 ;
708
                         SWAP ;
709
                         EXEC ;
710
                         IF { IF { DUP 3 } { DUP ; GET 11 } } { DROP ; DUP ; GET 9 } ;
711
                         DUP 2 ;
712
                         GET 7 ;
713
                         DUP 2 ;
714
                         COMPARE ;
715
                         NEQ ;
716
                         IF
717
                           { DIG 2 ;
718
                             DIG 3 ;
719
                             DUP 3 ;
720
                             COMPARE ;
721
                             NEQ ;
722
                             IF { DUP 2 ; SOME } { NONE key_hash } ;
723
                             SET_DELEGATE ;
724
                             CONS ;
725
                             UNIT ;
726
                             DIG 3 ;
727
                             DIG 3 ;
728
                             UPDATE 7 }
729
                           { DIG 3 ; DROP 2 ; UNIT ; SWAP } }
730
                       { DIG 2 ; DIG 3 ; DIG 4 ; DROP 3 ; UNIT ; SWAP } ;
731
                     DIG 2 ;
732
                     PAIR ;
733
                     SWAP ;
734
                     DROP ;
735
                     UNPAIR ;
736
                     SWAP }
737
                   { DIG 4 ;
738
                     DIG 7 ;
739
                     DIG 9 ;
740
                     DROP 3 ;
741
                     DUP 2 ;
742
                     GET 15 ;
743
                     SENDER ;
744
                     COMPARE ;
745
                     EQ ;
746
                     PUSH string "403" ;
747
                     SWAP ;
748
                     IF { DROP } { FAILWITH } ;
749
                     DIG 7 ;
750
                     PUSH mutez 0 ;
751
                     AMOUNT ;
752
                     COMPARE ;
753
                     EQ ;
754
                     IF { DROP } { FAILWITH } ;
755
                     DUP 2 ;
756
                     CAR ;
757
                     DUP 2 ;
758
                     CDR ;
759
                     GET ;
760
                     IF_NONE { DIG 5 } { DIG 6 ; DROP } ;
761
                     DIG 2 ;
762
                     DIG 4 ;
763
                     SWAP ;
764
                     EXEC ;
765
                     DUP 2 ;
766
                     CDR ;
767
                     PAIR ;
768
                     SWAP ;
769
                     CDR ;
770
                     DUP 3 ;
771
                     CDR ;
772
                     PAIR ;
773
                     PAIR ;
774
                     DIG 2 ;
775
                     SWAP ;
776
                     EXEC ;
777
                     DUP ;
778
                     GET 5 ;
779
                     DUP 3 ;
780
                     CDR ;
781
                     GET ;
782
                     IF_NONE { DIG 2 } { DIG 3 ; DROP } ;
783
                     NIL operation ;
784
                     DUP 5 ;
785
                     DUP 3 ;
786
                     CAR ;
787
                     COMPARE ;
788
                     GT ;
789
                     IF
790
                       { DUP 5 ;
791
                         DUP 3 ;
792
                         CAR ;
793
                         EDIV ;
794
                         IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
795
                         CAR ;
796
                         DUP 3 ;
797
                         DIG 6 ;
798
                         DUP 3 ;
799
                         MUL ;
800
                         DIG 4 ;
801
                         CAR ;
802
                         SUB ;
803
                         ISNAT ;
804
                         IF_NONE { DIG 5 ; FAILWITH } { DIG 6 ; DROP } ;
805
                         UPDATE 1 ;
806
                         DUP 4 ;
807
                         DUP 3 ;
808
                         DIG 5 ;
809
                         GET 23 ;
810
                         ADD ;
811
                         UPDATE 23 ;
812
                         DIG 3 ;
813
                         DUP 5 ;
814
                         CAR ;
815
                         PUSH mutez 1 ;
816
                         DIG 5 ;
817
                         MUL ;
818
                         UNIT ;
819
                         TRANSFER_TOKENS ;
820
                         CONS ;
821
                         UNIT ;
822
                         DIG 3 }
823
                       { DIG 4 ; DIG 5 ; DROP 2 ; UNIT ; DIG 2 } ;
824
                     DIG 3 ;
825
                     DIG 3 ;
826
                     PAIR ;
827
                     PAIR ;
828
                     SWAP ;
829
                     DROP ;
830
                     UNPAIR ;
831
                     UNPAIR ;
832
                     DUP 2 ;
833
                     DIG 2 ;
834
                     GET 5 ;
835
                     DIG 3 ;
836
                     DIG 4 ;
837
                     CDR ;
838
                     SWAP ;
839
                     SOME ;
840
                     SWAP ;
841
                     UPDATE ;
842
                     UPDATE 5 } ;
843
                 SWAP } } ;
844
         PAIR } ;
845
  view "get_user_reward" address nat
846
        { PUSH nat 1000000000000000000 ;
847
          SWAP ;
848
          UNPAIR ;
849
          PUSH nat 0 ;
850
          DUP 3 ;
851
          GET 33 ;
852
          COMPARE ;
853
          GT ;
854
          IF
855
            { DUP 2 ;
856
              GET 31 ;
857
              LEVEL ;
858
              COMPARE ;
859
              GT ;
860
              IF { DUP 2 ; GET 31 } { LEVEL } ;
861
              DUP 3 ;
862
              GET 27 ;
863
              DUP 4 ;
864
              GET 29 ;
865
              DIG 2 ;
866
              SUB ;
867
              ISNAT ;
868
              IF_NONE { PUSH string "406" ; FAILWITH } {} ;
869
              MUL ;
870
              DUP 3 ;
871
              GET 33 ;
872
              SWAP ;
873
              EDIV ;
874
              IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
875
              CAR ;
876
              DUP 3 ;
877
              GET 25 ;
878
              ADD ;
879
              DUP 3 ;
880
              GET 31 ;
881
              LEVEL ;
882
              COMPARE ;
883
              GT ;
884
              IF
885
                { PUSH string "201" ;
886
                  DUP 4 ;
887
                  GET 15 ;
888
                  UNIT ;
889
                  VIEW "get_collecting_period" nat ;
890
                  IF_NONE { FAILWITH } { SWAP ; DROP } ;
891
                  DUP ;
892
                  PUSH nat 1 ;
893
                  DIG 2 ;
894
                  DUP 6 ;
895
                  GET 31 ;
896
                  LEVEL ;
897
                  SUB ;
898
                  ISNAT ;
899
                  IF_NONE { PUSH string "406" ; FAILWITH } {} ;
900
                  EDIV ;
901
                  IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
902
                  CAR ;
903
                  ADD ;
904
                  MUL ;
905
                  DUP 5 ;
906
                  DUP 5 ;
907
                  GET 19 ;
908
                  MUL ;
909
                  EDIV ;
910
                  IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
911
                  CAR ;
912
                  DUP 4 ;
913
                  GET 31 ;
914
                  LEVEL ;
915
                  SUB ;
916
                  ISNAT ;
917
                  IF_NONE { PUSH string "406" ; FAILWITH } {} ;
918
                  MUL ;
919
                  DUP 4 ;
920
                  GET 33 ;
921
                  SWAP ;
922
                  EDIV ;
923
                  IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
924
                  CAR ;
925
                  ADD }
926
                {} ;
927
              DUP 3 ;
928
              GET 5 ;
929
              DUP 3 ;
930
              GET ;
931
              IF_NONE { PUSH nat 0 ; PUSH nat 0 ; PAIR } {} ;
932
              SWAP ;
933
              DIG 3 ;
934
              CAR ;
935
              DIG 3 ;
936
              GET ;
937
              IF_NONE { PUSH nat 0 ; NONE key_hash ; PAIR } {} ;
938
              CDR ;
939
              MUL ;
940
              DUP 2 ;
941
              CDR ;
942
              SWAP ;
943
              SUB ;
944
              ISNAT ;
945
              IF_NONE { PUSH string "406" ; FAILWITH } {} ;
946
              SWAP ;
947
              CAR ;
948
              ADD ;
949
              EDIV ;
950
              IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
951
              CAR }
952
            { DROP 3 ; PUSH nat 0 } } ;
953
  view "get_user_candidate" address key_hash
954
        { UNPAIR ;
955
          DUP 2 ;
956
          CAR ;
957
          SWAP ;
958
          GET ;
959
          IF_NONE { PUSH nat 0 ; NONE key_hash ; PAIR } {} ;
960
          CAR ;
961
          IF_NONE { GET 9 } { SWAP ; DROP } } ;
962
  view "get_tez_balance" unit nat
963
        { DROP ;
964
          PUSH mutez 1 ;
965
          BALANCE ;
966
          EDIV ;
967
          IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
968
          CAR } ;
969
  view "is_banned_baker" key_hash bool
970
        { UNPAIR ;
971
          NOW ;
972
          DIG 2 ;
973
          GET 3 ;
974
          DIG 2 ;
975
          GET ;
976
          IF_NONE { PUSH nat 0 ; PUSH timestamp 0 ; PAIR } {} ;
977
          CAR ;
978
          COMPARE ;
979
          GT } }