x
785
1199
{ parameter (or (or (or (pair %bid (nat %auction_id) (pair (nat %amount) (pair (map %referrers address nat) (option %condition_extra bytes)))) (nat %cancel_auction)) (or (pair %create_auction (pair %token (address %address) (nat %token_id)) (pair (or %currency (address %fa12) (pair %fa2 (address %address) (nat %token_id))) (pair (nat %reserve) (pair (option %start_time timestamp) (pair (nat %duration) (pair (nat %extension_time) (pair (nat %price_increment) (pair (map %shares address nat) (pair (nat %referral_bonus) (option %condition (pair (address %address) (bytes %id)))))))))))) (unit %default))) (or (or (unit %delegate) (nat %settle_auction)) (or (address %update_fee_sharing_registry) (address %update_permission_module)))) ; storage (pair (pair (big_map %auctions nat (pair (address %creator) (pair (pair %token (address %address) (nat %token_id)) (pair (or %currency (address %fa12) (pair %fa2 (address %address) (nat %token_id))) (pair (nat %reserve) (pair (nat %duration) (pair (timestamp %start_time) (pair (option %end_time timestamp) (pair (nat %extension_time) (pair (nat %price_increment) (pair (nat %current_price) (pair (address %highest_bidder) (pair (map %shares address nat) (pair (nat %platform_fee) (pair (nat %referral_bonus) (pair (map %share_fees address nat) (option %condition (pair (address %address) (bytes %id))))))))))))))))))) (address %fee_sharing_registry)) (pair (big_map %metadata string bytes) (pair (nat %next_auction_id) (address %permission_module)))) ; code { LAMBDA (pair (pair (pair nat address) (pair address (pair address nat))) (pair (list operation) (pair (pair (big_map nat (pair address (pair (pair address nat) (pair (or address (pair address nat)) (pair nat (pair nat (pair timestamp (pair (option timestamp) (pair nat (pair nat (pair nat (pair address (pair (map address nat) (pair nat (pair nat (pair (map address nat) (option (pair address bytes)))))))))))))))))) address) (pair (big_map string bytes) (pair nat address))))) (pair unit (pair (list operation) (pair (pair (big_map nat (pair address (pair (pair address nat) (pair (or address (pair address nat)) (pair nat (pair nat (pair timestamp (pair (option timestamp) (pair nat (pair nat (pair nat (pair address (pair (map address nat) (pair nat (pair nat (pair (map address nat) (option (pair address bytes)))))))))))))))))) address) (pair (big_map string bytes) (pair nat address))))) { UNPAIR 3 ; DUP ; DUG 2 ; CAR ; CDR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 336 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP ; CAR ; CAR ; SWAP ; DUP ; GET 6 ; SWAP ; DUP ; DUG 8 ; GET 5 ; PAIR 3 ; CONS ; DIG 5 ; GET 3 ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; UNIT ; PAIR 3 } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { DUP ; GET 5 ; SIZE ; PUSH nat 50 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "E_MAX_50_REFERRERS" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 273 ; FAILWITH } {} ; DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH string "E_NO_SELF_BID" ; FAILWITH } {} ; DUP ; GET 11 ; NOW ; COMPARE ; GE ; IF {} { PUSH string "E_NOT_STARTED" ; FAILWITH } ; DUP ; GET 13 ; IF_NONE { PUSH bool False } { DROP ; PUSH bool True } ; DUP ; IF { SWAP ; DUP ; DUG 2 ; GET 13 ; IF_NONE { PUSH int 284 ; FAILWITH } {} ; NOW ; COMPARE ; LT } { PUSH bool True } ; IF {} { PUSH string "E_NOT_IN_WINDOW" ; FAILWITH } ; DUP ; IF { PUSH bool False } { SWAP ; DUP ; DUG 2 ; GET 7 ; DUP 4 ; GET 3 ; COMPARE ; GE } ; IF { PUSH bool True } { DUP ; IF { SWAP ; DUP ; GET 17 ; SWAP ; DUP ; DUG 3 ; GET 19 ; ADD ; DUP 4 ; GET 3 ; COMPARE ; GE } { PUSH bool False } } ; IF {} { PUSH string "E_BID_TOO_SMALL" ; FAILWITH } ; PUSH nat 0 ; DUP 4 ; GET 3 ; COMPARE ; GT ; IF {} { PUSH string "WrongCondition: params.amount > 0" ; FAILWITH } ; DUP ; IF {} { DIG 3 ; UNPAIR ; UNPAIR ; DUP ; DUP 7 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 296 ; FAILWITH } {} ; DUP 7 ; GET 9 ; INT ; NOW ; ADD ; SOME ; UPDATE 13 ; SOME ; SWAP ; UPDATE ; PAIR ; PAIR ; DUG 3 } ; DUP 4 ; CAR ; CDR ; DUP 4 ; GET 5 ; DIG 3 ; DUP ; GET 27 ; SWAP ; DUP ; DUG 5 ; GET 25 ; PAIR 3 ; VIEW "get_share_fee" (map address nat) ; IF_NONE { PUSH int 136 ; FAILWITH } {} ; DIG 4 ; UNPAIR ; UNPAIR ; DUP ; DUP 8 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 307 ; FAILWITH } {} ; DUP 6 ; UPDATE 29 ; SOME ; SWAP ; UPDATE ; PAIR ; PAIR ; DUG 4 ; DUP 3 ; GET 5 ; IF_LEFT { DUP ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; DUP 8 ; GET 3 ; SELF_ADDRESS ; PAIR ; SENDER ; PAIR ; TRANSFER_TOKENS ; CONS ; PUSH nat 0 ; DUP 6 ; GET 19 ; COMPARE ; EQ ; IF { SWAP ; DROP } { SWAP ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 5 ; DUP ; GET 19 ; SWAP ; DUP ; DUG 7 ; GET 21 ; PAIR ; SELF_ADDRESS ; PAIR ; TRANSFER_TOKENS ; CONS } } { NIL operation ; DUP 8 ; DUP 3 ; CDR ; SELF_ADDRESS ; PAIR ; SENDER ; PAIR ; DUP 4 ; CAR ; DUP 9 ; GET 3 ; PAIR ; PAIR ; SWAP ; DIG 8 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; DIG 7 ; DIG 2 ; DUG 7 ; DUG 7 ; PUSH nat 0 ; DUP 6 ; GET 19 ; COMPARE ; EQ ; IF { SWAP ; DROP } { DUP 8 ; DUP 3 ; CDR ; DUP 7 ; GET 21 ; PAIR ; SELF_ADDRESS ; PAIR ; DIG 3 ; CAR ; DUP 7 ; GET 19 ; PAIR ; PAIR ; SWAP ; DIG 7 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; DIG 6 ; DIG 2 ; DUG 6 ; DUG 6 } } ; DUP 4 ; GET 30 ; IF_NONE { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } { DIG 2 ; DROP ; DIG 2 ; DROP ; DUP ; DUG 2 ; CAR ; CONTRACT %enforce_conditions (list (pair (pair (nat %amount) (pair (address %claimer) (bytes %condition_id))) (pair (address %creator) (pair (option %extra bytes) (pair %token (address %address) (nat %token_id)))))) ; IF_NONE { PUSH int 517 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair (pair nat (pair address bytes)) (pair address (pair (option bytes) (pair address nat)))) ; DUP 6 ; GET 3 ; DUP 8 ; GET 6 ; PAIR ; DIG 6 ; CAR ; PAIR ; DIG 5 ; CDR ; SENDER ; PAIR ; PUSH nat 1 ; PAIR ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } ; DIG 2 ; UNPAIR ; UNPAIR ; DUP ; DUP 6 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 363 ; FAILWITH } {} ; DUP 7 ; GET 3 ; UPDATE 19 ; SOME ; SWAP ; UPDATE ; DUP ; DUP 6 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 364 ; FAILWITH } {} ; SENDER ; UPDATE 21 ; SOME ; SWAP ; UPDATE ; PAIR ; PAIR ; DUP ; DUG 3 ; CAR ; CAR ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 369 ; FAILWITH } {} ; GET 15 ; INT ; NOW ; DUP 5 ; CAR ; CAR ; DUP 5 ; CAR ; GET ; IF_NONE { PUSH int 368 ; FAILWITH } {} ; GET 13 ; IF_NONE { PUSH int 368 ; FAILWITH } {} ; SUB ; COMPARE ; LT ; IF { DIG 3 ; DROP ; DUP 3 ; UNPAIR ; UNPAIR ; DUP ; DUP 6 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 371 ; FAILWITH } {} ; DIG 7 ; CAR ; CAR ; DIG 7 ; CAR ; GET ; IF_NONE { PUSH int 373 ; FAILWITH } {} ; GET 15 ; INT ; NOW ; ADD ; SOME ; UPDATE 13 ; SOME ; SWAP ; UPDATE ; PAIR ; PAIR ; SWAP } { SWAP ; DROP ; DIG 2 ; DROP } } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 226 ; FAILWITH } {} ; DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "E_NOT_SELLER" ; FAILWITH } ; DUP ; GET 13 ; IF_NONE {} { PUSH string "E_HAS_BID" ; FAILWITH } ; NIL operation ; DIG 4 ; DUP 3 ; GET 3 ; CDR ; SENDER ; PAIR ; SELF_ADDRESS ; PAIR ; DIG 3 ; GET 3 ; CAR ; PUSH nat 1 ; PAIR ; PAIR ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; NONE (pair address (pair (pair address nat) (pair (or address (pair address nat)) (pair nat (pair nat (pair timestamp (pair (option timestamp) (pair nat (pair nat (pair nat (pair address (pair (map address nat) (pair nat (pair nat (pair (map address nat) (option (pair address bytes))))))))))))))))) ; DIG 5 ; UPDATE ; PAIR ; PAIR ; SWAP } } { IF_LEFT { DUP ; GET 9 ; PUSH nat 2592000 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "E_MAX_30_DAYS" ; FAILWITH } ; DUP ; GET 13 ; PUSH nat 1 ; SWAP ; COMPARE ; GE ; IF {} { PUSH string "E_PRICE_INCR_0" ; FAILWITH } ; DUP ; GET 11 ; PUSH nat 3600 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "E_MAX_1_HR_EXT" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; UNIT ; VIEW "get_management_fee" nat ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; PUSH nat 100 ; DUP 3 ; GET 15 ; SIZE ; COMPARE ; LE ; IF {} { PUSH string "R_TOO_MANY_SHARES" ; FAILWITH } ; PUSH nat 0 ; DUP 3 ; GET 15 ; ITER { CDR ; ADD } ; SWAP ; DUP ; DUG 2 ; PUSH nat 10000 ; SUB ; ISNAT ; IF_NONE { PUSH int 28 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; COMPARE ; LE ; IF {} { PUSH string "R_INVALID_SHARES_TOTAL" ; FAILWITH } ; DUP 4 ; CAR ; CDR ; DUP 4 ; GET 17 ; VIEW "is_valid_referral_fee_level" bool ; IF_NONE { PUSH int 156 ; FAILWITH } {} ; IF {} { PUSH string "E_INVALID_R_FEE" ; FAILWITH } ; NIL operation ; DUP 6 ; DUP 5 ; CAR ; CDR ; SELF_ADDRESS ; PAIR ; SENDER ; PAIR ; DUP 6 ; CAR ; CAR ; PUSH nat 1 ; PAIR ; PAIR ; SWAP ; DIG 6 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; UNPAIR 3 ; DIG 6 ; DIG 3 ; DUG 6 ; DUG 6 ; NOW ; DUP 6 ; GET 7 ; IF_NONE {} { SWAP ; DROP } ; DUP 7 ; UNPAIR ; UNPAIR ; DUP 9 ; GET 18 ; EMPTY_MAP address nat ; DUP 11 ; GET 17 ; DUP 11 ; DUP 13 ; GET 15 ; SENDER ; PUSH nat 0 ; DIG 15 ; DUP ; GET 13 ; SWAP ; DUP ; DUG 17 ; GET 11 ; NONE timestamp ; DUP 14 ; DIG 19 ; DUP ; GET 9 ; SWAP ; DUP ; GET 5 ; SWAP ; DUP ; GET 3 ; SWAP ; DUP ; DUG 23 ; CAR ; SENDER ; PAIR 16 ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 6 ; DROP ; SOME ; DIG 5 ; GET 5 ; UPDATE ; PAIR ; PAIR ; DUP ; GET 5 ; PUSH nat 1 ; ADD ; UPDATE 5 ; SWAP } { DROP ; SWAP ; DROP ; DUP ; GET 6 ; NIL operation ; SWAP ; UNIT ; VIEW "get_baking_reward_collector" address ; IF_NONE { PUSH int 167 ; FAILWITH } {} ; CONTRACT unit ; IF_NONE { PUSH int 181 ; FAILWITH } {} ; AMOUNT ; UNIT ; TRANSFER_TOKENS ; CONS } } } { IF_LEFT { IF_LEFT { DROP ; SWAP ; DROP ; DUP ; GET 6 ; NIL operation ; SWAP ; UNIT ; VIEW "get_delegate" key_hash ; IF_NONE { PUSH int 176 ; FAILWITH } {} ; SOME ; SET_DELEGATE ; CONS } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 384 ; FAILWITH } {} ; DUP ; GET 13 ; IF_NONE { PUSH int 386 ; FAILWITH } {} ; NOW ; COMPARE ; GE ; IF {} { PUSH string "E_AUCTION_ACTIVE" ; FAILWITH } ; NIL operation ; DUP 5 ; DIG 2 ; DUP ; GET 3 ; CDR ; SWAP ; DUP ; DUG 4 ; GET 21 ; PAIR ; SELF_ADDRESS ; PAIR ; DUP 4 ; GET 3 ; CAR ; PUSH nat 1 ; PAIR ; PAIR ; SWAP ; DIG 5 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; UNPAIR 3 ; DIG 5 ; DIG 3 ; DUG 5 ; DUG 5 ; PUSH nat 0 ; DUP 4 ; GET 19 ; COMPARE ; GT ; IF { DUP 5 ; GET 6 ; UNIT ; VIEW "get_treasury" address ; IF_NONE { PUSH int 158 ; FAILWITH } {} ; DUP 4 ; GET 25 ; PUSH nat 0 ; DUP 6 ; GET 29 ; DUP 7 ; GET 29 ; ITER { DIG 2 ; SWAP ; CDR ; ADD ; SWAP } ; PUSH nat 0 ; DUP 8 ; GET 27 ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 47 ; FAILWITH } {} ; DUG 2 } {} ; DUP 7 ; GET 23 ; ITER { DUP ; CDR ; DIG 3 ; ADD ; DUG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { SWAP ; DUP ; DUP 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 53 ; FAILWITH } {} ; DIG 3 ; CDR ; ADD ; SOME ; SWAP ; UPDATE } { DUP ; DUG 2 ; CDR ; SOME ; DIG 2 ; CAR ; UPDATE } } ; DUP 3 ; DIG 2 ; ADD ; SWAP ; DUP ; DUP 5 ; MEM ; IF { DUP ; DUP 5 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 60 ; FAILWITH } {} ; DUP 5 ; ADD ; SOME ; SWAP ; UPDATE } { DUP 3 ; SOME ; DUP 5 ; UPDATE } ; PUSH nat 10000 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "WrongCondition: total_fee.value <= 10000" ; FAILWITH } ; DUP 7 ; GET 5 ; IF_LEFT { PUSH nat 0 ; DUP 3 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 12 ; GET 19 ; MUL ; EDIV ; IF_NONE { PUSH int 255 ; FAILWITH } { CAR } ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DIG 9 ; DUP 5 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 4 ; CAR ; PAIR ; SELF_ADDRESS ; PAIR ; TRANSFER_TOKENS ; CONS ; DUG 7 } { DROP 2 } } ; DUP ; DUP 10 ; GET 19 ; SUB ; DUP 10 ; GET 19 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 6 ; DROP ; DUG 2 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; ISNAT ; IF_NONE { PUSH int 265 ; FAILWITH } {} ; DIG 4 ; CAR ; PAIR ; SELF_ADDRESS ; PAIR ; TRANSFER_TOKENS ; CONS } { DROP 8 ; SWAP ; DROP ; DIG 3 ; DROP } } { PUSH nat 0 ; NIL (pair address (pair nat nat)) ; DUP 4 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 13 ; GET 19 ; MUL ; EDIV ; IF_NONE { PUSH int 106 ; FAILWITH } { CAR } ; DUP ; DIG 4 ; ADD ; DUG 3 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DIG 2 ; SWAP ; DUP 5 ; CDR ; DIG 3 ; CAR ; PAIR 3 ; CONS } { DROP 2 } } ; DUP 10 ; GET 19 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; DUP 11 ; GET 19 ; SUB ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 7 ; DROP ; ISNAT ; IF_NONE { PUSH int 122 ; FAILWITH } {} ; DUP 3 ; CDR ; DIG 5 ; CAR ; PAIR 3 ; CONS } { DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 5 ; DROP } ; DUG 2 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 394 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; DIG 4 ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } } { DROP ; SWAP ; DROP ; DIG 3 ; DROP } ; DIG 2 ; UNPAIR ; UNPAIR ; NONE (pair address (pair (pair address nat) (pair (or address (pair address nat)) (pair nat (pair nat (pair timestamp (pair (option timestamp) (pair nat (pair nat (pair nat (pair address (pair (map address nat) (pair nat (pair nat (pair (map address nat) (option (pair address bytes))))))))))))))))) ; DIG 5 ; UPDATE ; PAIR ; PAIR ; SWAP } } { DIG 2 ; DROP ; IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 6 ; UNIT ; VIEW "get_admin" address ; IF_NONE { PUSH int 135 ; FAILWITH } {} ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PMI_ONLY_ADMIN" ; FAILWITH } ; SWAP ; UNPAIR ; CAR ; DIG 2 ; SWAP ; PAIR ; PAIR } { SWAP ; DUP ; DUG 2 ; GET 6 ; UNIT ; VIEW "get_admin" address ; IF_NONE { PUSH int 135 ; FAILWITH } {} ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PMI_ONLY_ADMIN" ; FAILWITH } ; UPDATE 6 } ; NIL operation } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR } ; view "get_next_auction_id" unit nat { CDR ; GET 5 } }