x
979
{ parameter (or (or (or (pair %ban_baker (key_hash %baker) (nat %ban_period)) (address %claim_baker_fund)) (or (unit %default) (unit %fill))) (or (or (pair %pour_out (contract %receiver unit) (nat %amt)) (pair %pour_over (address %bucket) (nat %amt))) (or (pair %vote (address %voter) (key_hash %candidate) (bool %execute_voting) (nat %votes)) (pair %withdraw_rewards (contract %receiver unit) (address %user))))) ; storage (pair (big_map %users address (pair (option %candidate key_hash) (nat %votes))) (big_map %bakers key_hash (pair (timestamp %ban_end_time) (nat %votes))) (big_map %users_rewards address (pair (nat %reward_f) (nat %reward_paid_f))) (key_hash %previous_delegated) (key_hash %current_delegated) (key_hash %next_candidate) (address %baker_registry) (address %dex_core) (nat %pair_id) (nat %next_reward) (nat %total_reward) (nat %reward_paid) (nat %reward_per_share) (nat %reward_per_block) (nat %last_update_level) (nat %collecting_period_end) (nat %total_supply) (nat %baker_fund)) ; code { PUSH string "406" ; PUSH string "412" ; PUSH key_hash 0x0098b9732c83017e938ba48cb91cf53e5f919dc844 ; PUSH nat 1000000000000000000 ; PUSH nat 0 ; PUSH timestamp 0 ; PAIR ; PUSH nat 0 ; NONE key_hash ; PAIR ; PUSH nat 0 ; PUSH nat 0 ; PAIR ; LAMBDA (pair timestamp nat) bool { NOW ; SWAP ; CAR ; COMPARE ; GT } ; LAMBDA (pair (pair nat string) (pair (big_map address (pair (option key_hash) nat)) (big_map key_hash (pair timestamp nat)) (big_map address (pair nat nat)) key_hash key_hash key_hash address address nat nat nat nat nat nat nat nat nat nat)) (pair (big_map address (pair (option key_hash) nat)) (big_map key_hash (pair timestamp nat)) (big_map address (pair nat nat)) key_hash key_hash key_hash address address nat nat nat nat nat nat nat nat nat nat) { UNPAIR ; UNPAIR ; DIG 2 ; PUSH nat 0 ; DUP 2 ; GET 33 ; COMPARE ; GT ; IF { DUP ; GET 31 ; LEVEL ; COMPARE ; GT ; IF { DUP ; GET 31 } { LEVEL } ; DUP 2 ; GET 27 ; DUP 3 ; GET 29 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { DUP 4 ; FAILWITH } {} ; MUL ; DUP 2 ; DUP 3 ; GET 33 ; DIG 2 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DIG 2 ; GET 25 ; ADD ; UPDATE 25 ; DUP ; GET 31 ; LEVEL ; COMPARE ; GT ; IF { PUSH string "201" ; DUP 2 ; GET 15 ; UNIT ; VIEW "get_collecting_period" nat ; IF_NONE { FAILWITH } { SWAP ; DROP } ; DUP ; PUSH nat 1 ; DIG 2 ; DUP 4 ; GET 31 ; LEVEL ; SUB ; ISNAT ; IF_NONE { DUP 6 ; FAILWITH } {} ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; ADD ; MUL ; DUP 2 ; DUP 2 ; DIG 4 ; DIG 4 ; GET 19 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; UPDATE 27 ; DUP ; GET 27 ; DUP 2 ; GET 31 ; LEVEL ; SUB ; ISNAT ; IF_NONE { DIG 3 ; FAILWITH } { DIG 4 ; DROP } ; MUL ; DUP 2 ; DIG 3 ; DIG 3 ; GET 31 ; ADD ; UPDATE 31 ; DUP ; DUP 2 ; GET 33 ; DIG 3 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DIG 2 ; GET 25 ; ADD ; UPDATE 25 ; UNIT ; SWAP ; PUSH nat 0 ; UPDATE 19 } { SWAP ; DIG 2 ; DROP 2 ; UNIT ; SWAP } } { SWAP ; DIG 2 ; DROP 2 ; UNIT ; SWAP } ; SWAP ; DROP ; LEVEL ; UPDATE 29 } ; DUP 9 ; DUP 7 ; PAIR ; APPLY ; LAMBDA (pair (pair (pair nat nat) string) (pair (pair address nat) nat (big_map address (pair (option key_hash) nat)) (big_map key_hash (pair timestamp nat)) (big_map address (pair nat nat)) key_hash key_hash key_hash address address nat nat nat nat nat nat nat nat nat nat)) (pair (big_map address (pair (option key_hash) nat)) (big_map key_hash (pair timestamp nat)) (big_map address (pair nat nat)) key_hash key_hash key_hash address address nat nat nat nat nat nat nat nat nat nat) { UNPAIR ; UNPAIR ; DIG 2 ; UNPAIR ; UNPAIR ; DIG 2 ; UNPAIR ; DUP 2 ; GET 5 ; DUP 4 ; GET ; IF_NONE { DIG 4 } { DIG 5 ; DROP } ; DUP 3 ; GET 25 ; DIG 5 ; MUL ; DUP 2 ; DUP 3 ; CDR ; DIG 2 ; SUB ; ISNAT ; IF_NONE { DIG 5 ; FAILWITH } { DIG 6 ; DROP } ; DIG 2 ; CAR ; ADD ; UPDATE 1 ; DUP 3 ; GET 25 ; DIG 2 ; MUL ; UPDATE 2 ; DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; DIG 3 ; SWAP ; SOME ; SWAP ; UPDATE ; UPDATE 5 } ; DUP 10 ; DUP 5 ; PAIR ; APPLY ; DIG 10 ; UNPAIR ; IF_LEFT { DIG 2 ; DIG 4 ; DIG 5 ; DIG 6 ; DIG 9 ; DROP 5 ; IF_LEFT { DIG 2 ; DIG 4 ; DIG 6 ; DROP 3 ; IF_LEFT { DUP 2 ; GET 15 ; SENDER ; COMPARE ; EQ ; PUSH string "403" ; SWAP ; IF { DROP } { FAILWITH } ; DIG 3 ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; GET ; IF_NONE { DIG 2 } { DIG 3 ; DROP } ; DUP 2 ; CDR ; INT ; NOW ; ADD ; UPDATE 1 ; DUP 3 ; DIG 3 ; GET 3 ; DIG 2 ; DIG 3 ; CAR ; SWAP ; SOME ; SWAP ; UPDATE ; UPDATE 3 ; NIL operation } { DIG 2 ; DROP ; DUP 2 ; GET 15 ; SENDER ; COMPARE ; EQ ; PUSH string "403" ; SWAP ; IF { DROP } { FAILWITH } ; DIG 2 ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP 2 ; GET 34 ; PUSH string "203" ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { DROP } { FAILWITH } ; DIG 2 ; PUSH nat 0 ; UPDATE 34 ; NIL operation ; DIG 2 ; PUSH string "409" ; DIG 4 ; CONTRACT unit ; IF_NONE { FAILWITH } { SWAP ; DROP } ; PUSH mutez 1 ; DIG 2 ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS } } { DIG 3 ; DIG 5 ; DROP 2 ; IF_LEFT { DROP ; PUSH mutez 1 ; AMOUNT ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DIG 3 ; PUSH string "202" ; DUP 4 ; GET 15 ; UNIT ; VIEW "get_baker_rate" nat ; IF_NONE { FAILWITH } { SWAP ; DROP } ; DUP 3 ; MUL ; EDIV ; IF_NONE { PUSH string "408" ; FAILWITH } { PUSH nat 0 ; DUP 2 ; CDR ; COMPARE ; GT ; IF { PUSH nat 1 ; SWAP ; CAR ; ADD } { CAR } } ; DUP 3 ; DUP 2 ; DIG 4 ; GET 34 ; ADD ; UPDATE 34 ; DUP ; DIG 2 ; DIG 3 ; SUB ; ISNAT ; IF_NONE { DIG 3 ; FAILWITH } { DIG 4 ; DROP } ; DIG 2 ; GET 19 ; ADD ; UPDATE 19 ; EXEC } { DIG 2 ; DIG 3 ; DIG 4 ; DROP 4 } ; NIL operation } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DIG 6 ; DIG 7 ; DIG 8 ; DIG 9 ; DIG 11 ; DROP 9 ; IF_LEFT { DUP 2 ; GET 15 ; SENDER ; COMPARE ; EQ ; PUSH string "403" ; SWAP ; IF { DROP } { FAILWITH } ; DIG 2 ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; SWAP ; NIL operation ; DUP 3 ; CAR ; PUSH mutez 1 ; DIG 4 ; CDR ; MUL ; UNIT ; TRANSFER_TOKENS } { DUP 2 ; GET 15 ; SENDER ; COMPARE ; EQ ; PUSH string "403" ; SWAP ; IF { DROP } { FAILWITH } ; DIG 2 ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; SWAP ; NIL operation ; DUP 3 ; CAR ; PUSH mutez 1 ; DIG 4 ; CDR ; MUL ; PUSH string "410" ; DIG 2 ; CONTRACT %fill unit ; IF_NONE { FAILWITH } { SWAP ; DROP } ; SWAP ; UNIT ; TRANSFER_TOKENS } ; CONS } { IF_LEFT { DIG 5 ; DIG 8 ; DROP 2 ; DUP 2 ; GET 15 ; SENDER ; COMPARE ; EQ ; PUSH string "403" ; SWAP ; IF { DROP } { FAILWITH } ; DIG 8 ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; NIL operation ; PUSH string "200" ; DUP 4 ; GET 13 ; CONTRACT %validate key_hash ; IF_NONE { FAILWITH } { SWAP ; DROP } ; PUSH mutez 0 ; DUP 4 ; GET 3 ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; DUP 3 ; CAR ; GET ; IF_NONE { DIG 6 } { DIG 7 ; DROP } ; DIG 3 ; DIG 5 ; SWAP ; EXEC ; DUP 4 ; GET 6 ; PAIR ; DUP 2 ; CDR ; DUP 5 ; CAR ; PAIR ; PAIR ; DIG 4 ; SWAP ; EXEC ; DUP ; DUP 3 ; CDR ; DIG 2 ; GET 33 ; SUB ; ISNAT ; IF_NONE { DUP 8 ; FAILWITH } {} ; UPDATE 33 ; DUP ; DUP 5 ; GET 6 ; DIG 2 ; GET 33 ; ADD ; UPDATE 33 ; DUP 2 ; CAR ; IF_NONE { DIG 7 ; DROP ; UNIT ; SWAP } { DUP 2 ; GET 3 ; DUP 2 ; GET ; IF_NONE { DUP 7 } {} ; DUP 4 ; CDR ; DUP 2 ; CDR ; SUB ; ISNAT ; IF_NONE { DIG 9 ; FAILWITH } { DIG 10 ; DROP } ; UNIT ; DUP 5 ; DIG 5 ; GET 3 ; DIG 4 ; DIG 4 ; UPDATE 2 ; DIG 4 ; SWAP ; SOME ; SWAP ; UPDATE ; UPDATE 3 } ; SWAP ; DROP ; DUP ; GET 3 ; DUP 5 ; GET 3 ; GET ; IF_NONE { DUP 6 } {} ; DUP 5 ; GET 6 ; DUP 2 ; CDR ; ADD ; SWAP ; DUP 2 ; UPDATE 2 ; DUP 3 ; DIG 3 ; GET 3 ; DUP 3 ; DUP 8 ; GET 3 ; SWAP ; SOME ; SWAP ; UPDATE ; UPDATE 3 ; DIG 3 ; DUP 6 ; GET 6 ; UPDATE 2 ; PUSH nat 0 ; DUP 2 ; CDR ; COMPARE ; NEQ ; IF { UNIT ; SWAP ; DUP 7 ; GET 3 ; SOME ; UPDATE 1 } { UNIT ; SWAP ; NONE key_hash ; UPDATE 1 } ; SWAP ; DROP ; DUP 2 ; DIG 2 ; CAR ; DIG 2 ; DUP 7 ; CAR ; SWAP ; SOME ; SWAP ; UPDATE ; UPDATE 1 ; DUP ; GET 3 ; DUP 2 ; GET 9 ; GET ; IF_NONE { DUP 7 } {} ; DUP 2 ; GET 3 ; DUP 3 ; GET 11 ; GET ; IF_NONE { DUP 8 } {} ; DUP 2 ; CDR ; DIG 5 ; COMPARE ; GT ; IF { SWAP ; DIG 3 ; DROP 3 ; UNIT ; DUP 2 ; DIG 2 ; GET 9 ; UPDATE 11 ; DUP 4 ; GET 3 ; UPDATE 9 } { DUP 3 ; GET 9 ; DUP 7 ; GET 3 ; COMPARE ; NEQ ; DUP 2 ; CDR ; DIG 5 ; CDR ; COMPARE ; GT ; AND ; IF { DROP 2 ; UNIT ; SWAP ; DUP 4 ; GET 3 ; UPDATE 11 } { SWAP ; CDR ; SWAP ; CDR ; COMPARE ; GT ; IF { UNIT ; DUP 2 ; DUP 3 ; GET 11 ; UPDATE 9 ; DIG 2 ; GET 9 ; UPDATE 11 } { UNIT ; SWAP } } } ; SWAP ; DROP ; DIG 2 ; GET 5 ; IF { DUP ; GET 3 ; DUP 2 ; GET 11 ; GET ; IF_NONE { DUP 4 } {} ; DUP 4 ; SWAP ; EXEC ; DUP 2 ; GET 3 ; DUP 3 ; GET 9 ; GET ; IF_NONE { DIG 4 } { DIG 5 ; DROP } ; DIG 4 ; SWAP ; EXEC ; IF { IF { DUP 3 } { DUP ; GET 11 } } { DROP ; DUP ; GET 9 } ; DUP 2 ; GET 7 ; DUP 2 ; COMPARE ; NEQ ; IF { DIG 2 ; DIG 3 ; DUP 3 ; COMPARE ; NEQ ; IF { DUP 2 ; SOME } { NONE key_hash } ; SET_DELEGATE ; CONS ; UNIT ; DIG 3 ; DIG 3 ; UPDATE 7 } { DIG 3 ; DROP 2 ; UNIT ; SWAP } } { DIG 2 ; DIG 3 ; DIG 4 ; DROP 3 ; UNIT ; SWAP } ; DIG 2 ; PAIR ; SWAP ; DROP ; UNPAIR ; SWAP } { DIG 4 ; DIG 7 ; DIG 9 ; DROP 3 ; DUP 2 ; GET 15 ; SENDER ; COMPARE ; EQ ; PUSH string "403" ; SWAP ; IF { DROP } { FAILWITH } ; DIG 7 ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP 2 ; CAR ; DUP 2 ; CDR ; GET ; IF_NONE { DIG 5 } { DIG 6 ; DROP } ; DIG 2 ; DIG 4 ; SWAP ; EXEC ; DUP 2 ; CDR ; PAIR ; SWAP ; CDR ; DUP 3 ; CDR ; PAIR ; PAIR ; DIG 2 ; SWAP ; EXEC ; DUP ; GET 5 ; DUP 3 ; CDR ; GET ; IF_NONE { DIG 2 } { DIG 3 ; DROP } ; NIL operation ; DUP 5 ; DUP 3 ; CAR ; COMPARE ; GT ; IF { DUP 5 ; DUP 3 ; CAR ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 3 ; DIG 6 ; DUP 3 ; MUL ; DIG 4 ; CAR ; SUB ; ISNAT ; IF_NONE { DIG 5 ; FAILWITH } { DIG 6 ; DROP } ; UPDATE 1 ; DUP 4 ; DUP 3 ; DIG 5 ; GET 23 ; ADD ; UPDATE 23 ; DIG 3 ; DUP 5 ; CAR ; PUSH mutez 1 ; DIG 5 ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS ; UNIT ; DIG 3 } { DIG 4 ; DIG 5 ; DROP 2 ; UNIT ; DIG 2 } ; DIG 3 ; DIG 3 ; PAIR ; PAIR ; SWAP ; DROP ; UNPAIR ; UNPAIR ; DUP 2 ; DIG 2 ; GET 5 ; DIG 3 ; DIG 4 ; CDR ; SWAP ; SOME ; SWAP ; UPDATE ; UPDATE 5 } ; SWAP } } ; PAIR } ; view "get_user_reward" address nat { PUSH nat 1000000000000000000 ; SWAP ; UNPAIR ; PUSH nat 0 ; DUP 3 ; GET 33 ; COMPARE ; GT ; IF { DUP 2 ; GET 31 ; LEVEL ; COMPARE ; GT ; IF { DUP 2 ; GET 31 } { LEVEL } ; DUP 3 ; GET 27 ; DUP 4 ; GET 29 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { PUSH string "406" ; FAILWITH } {} ; MUL ; DUP 3 ; GET 33 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 3 ; GET 25 ; ADD ; DUP 3 ; GET 31 ; LEVEL ; COMPARE ; GT ; IF { PUSH string "201" ; DUP 4 ; GET 15 ; UNIT ; VIEW "get_collecting_period" nat ; IF_NONE { FAILWITH } { SWAP ; DROP } ; DUP ; PUSH nat 1 ; DIG 2 ; DUP 6 ; GET 31 ; LEVEL ; SUB ; ISNAT ; IF_NONE { PUSH string "406" ; FAILWITH } {} ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; ADD ; MUL ; DUP 5 ; DUP 5 ; GET 19 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 4 ; GET 31 ; LEVEL ; SUB ; ISNAT ; IF_NONE { PUSH string "406" ; FAILWITH } {} ; MUL ; DUP 4 ; GET 33 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; ADD } {} ; DUP 3 ; GET 5 ; DUP 3 ; GET ; IF_NONE { PUSH nat 0 ; PUSH nat 0 ; PAIR } {} ; SWAP ; DIG 3 ; CAR ; DIG 3 ; GET ; IF_NONE { PUSH nat 0 ; NONE key_hash ; PAIR } {} ; CDR ; MUL ; DUP 2 ; CDR ; SWAP ; SUB ; ISNAT ; IF_NONE { PUSH string "406" ; FAILWITH } {} ; SWAP ; CAR ; ADD ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } { DROP 3 ; PUSH nat 0 } } ; view "get_user_candidate" address key_hash { UNPAIR ; DUP 2 ; CAR ; SWAP ; GET ; IF_NONE { PUSH nat 0 ; NONE key_hash ; PAIR } {} ; CAR ; IF_NONE { GET 9 } { SWAP ; DROP } } ; view "get_tez_balance" unit nat { DROP ; PUSH mutez 1 ; BALANCE ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } ; view "is_banned_baker" key_hash bool { UNPAIR ; NOW ; DIG 2 ; GET 3 ; DIG 2 ; GET ; IF_NONE { PUSH nat 0 ; PUSH timestamp 0 ; PAIR } {} ; CAR ; COMPARE ; GT } }