x
688
1628
{ parameter (or (or (or (bytes %challenge) (bytes %commit_name)) (or (pair %create_channel (bytes %name_enc) (bytes %name_hash)) (or (bytes %finalize_name) (pair %register (key %burner_key) (pair (bytes %enc_key) (pair (bytes %username_enc) (bytes %username_hash))))))) (or (or (pair %rename_channel (nat %cid) (pair (bytes %name_enc) (bytes %name_hash))) (pair %reveal_name (bytes %name) (pair (bytes %name_enc) (bytes %salt)))) (or (key %rotate_session_key) (or (unit %withdraw_name_fees) (unit %withdraw_refund))))) ; storage (pair (big_map %banned address (pair (nat %strikes) (timestamp %until))) (pair (mutez %base_price) (pair (big_map %channels nat (pair (bytes %name_enc) (pair (bytes %name_hash) (pair (address %owner) (bool %primary))))) (pair (big_map %commits bytes (pair (timestamp %committed) (address %owner))) (pair (mutez %floor_price) (pair (int %min_commit_age) (pair (nat %min_entropy) (pair (big_map %names bytes (pair (nat %cid) (pair (timestamp %committed) (pair (bool %final) (mutez %paid))))) (pair (nat %next_cid) (pair (address %owner) (pair (big_map %primary address nat) (pair (big_map %pubkeys address (pair (key %burner_key) (pair (bytes %enc_key) (nat %session_nonce)))) (pair (big_map %refunds address mutez) (pair (int %reveal_window) (mutez %withdrawable))))))))))))))) ; code { LAMBDA (pair address (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) (pair unit (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) { UNPAIR ; PUSH nat 0 ; DUP 3 ; CAR ; DUP 3 ; MEM ; IF { DROP ; DUP 2 ; CAR ; DUP 2 ; GET ; IF_NONE { PUSH int 141 ; FAILWITH } {} ; CAR } {} ; PUSH nat 1 ; ADD ; PUSH int 604800 ; NOW ; ADD ; PUSH nat 2 ; DUP 3 ; COMPARE ; GE ; IF { DROP ; PUSH int 3153600000 ; NOW ; ADD } {} ; DIG 3 ; DUP ; CAR ; DIG 2 ; DIG 3 ; PAIR ; SOME ; DIG 3 ; UPDATE ; UPDATE 1 ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair address (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) (pair unit (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) { UNPAIR ; DUP 2 ; CAR ; DUP 2 ; MEM ; IF { DUP 2 ; CAR ; SWAP ; GET ; IF_NONE { PUSH int 135 ; FAILWITH } {} ; CDR ; NOW ; COMPARE ; GT ; IF {} { PUSH string "BANNED" ; FAILWITH } } { DROP } ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair bytes (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) (pair bool (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) { UNPAIR ; DUP ; SIZE ; PUSH bool False ; PUSH nat 0 ; PUSH nat 0 ; DUP 4 ; DUP 2 ; COMPARE ; LT ; LOOP { DUP 3 ; IF {} { PUSH bytes 0x23 ; DUP 6 ; PUSH nat 1 ; DUP 4 ; SLICE ; IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ; COMPARE ; EQ ; IF { SWAP ; DROP ; SWAP ; DROP ; PUSH bool True ; SWAP ; DUP } {} } ; PUSH nat 1 ; ADD ; DUP 4 ; DUP 2 ; COMPARE ; LT } ; DROP ; PUSH bool False ; DIG 2 ; IF { DIG 3 ; DROP ; DUP 4 ; GET 13 ; PUSH int 1 ; DIG 3 ; DIG 4 ; SUB ; SUB ; ISNAT ; IF_NONE { PUSH int 128 ; FAILWITH } {} ; COMPARE ; GE ; IF { DROP ; PUSH bool True } {} } { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; PAIR } ; SWAP ; LAMBDA (pair nat (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) (pair mutez (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) { UNPAIR ; DUP 2 ; GET 3 ; PUSH nat 1 ; DUP 3 ; DUP 2 ; COMPARE ; LT ; IF { DUP 4 ; GET 9 ; DUP 3 ; COMPARE ; GT } { PUSH bool False } ; LOOP { PUSH nat 4 ; PUSH nat 1 ; DIG 3 ; MUL ; EDIV ; IF_NONE { PUSH int 102 ; FAILWITH } {} ; CAR ; SWAP ; PUSH nat 1 ; ADD ; DUP 3 ; DUP 2 ; COMPARE ; LT ; IF { DUP 4 ; GET 9 ; DUP 3 ; COMPARE ; GT } { PUSH bool False } } ; DUP 2 ; DUP 5 ; GET 9 ; DUP 2 ; COMPARE ; LT ; IF { DROP 4 ; DUP ; GET 9 } { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP ; BLAKE2B ; DUP 3 ; GET 15 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_NAME" ; FAILWITH } ; DUP 3 ; GET 15 ; DUP 2 ; GET ; IF_NONE { PUSH int 348 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 7 ; DUP 5 ; SWAP ; DIG 6 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 5 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; IF {} { DROP ; DUP 5 ; DUP 4 ; SIZE ; SWAP ; DIG 5 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DIG 8 ; DIG 8 ; DIG 8 ; DIG 8 ; DIG 5 ; DIG 8 ; DIG 8 ; DIG 8 ; DIG 8 } ; DUP 2 ; GET 6 ; DUP 2 ; COMPARE ; GT ; IF {} { PUSH string "NOT_UNDERPAID" ; FAILWITH } ; DUP 5 ; GET 5 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 355 ; FAILWITH } {} ; GET 5 ; DUP 10 ; DUP 2 ; SWAP ; DIG 7 ; DIG 2 ; PAIR ; EXEC ; CDR ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 4 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; DUP 3 ; GET 5 ; IF {} { DIG 5 ; DUP ; GET 28 ; DUP 5 ; GET 6 ; ADD ; UPDATE 28 ; DUG 5 } ; DIG 5 ; DUP ; GET 15 ; NONE (pair nat (pair timestamp (pair bool mutez))) ; DUP 7 ; UPDATE ; UPDATE 15 ; DUG 5 ; DUP 6 ; GET 5 ; DUP 4 ; CAR ; GET ; IF_NONE { PUSH int 360 ; FAILWITH } {} ; DIG 6 ; DUP ; GET 5 ; DUP 3 ; GET 6 ; DUP 4 ; GET 5 ; PUSH bytes 0x ; DUP 6 ; CAR ; PAIR 4 ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; SOME ; DIG 4 ; CAR ; UPDATE ; UPDATE 5 ; DUG 2 ; NIL operation ; DUP 4 ; CAR ; DUP 3 ; GET ; IF_NONE { PUSH int 364 ; FAILWITH } {} ; CAR ; DIG 2 ; DIG 3 ; PAIR 3 ; EMIT %name_challenged (pair (bytes %name_hash) (pair (address %offender) (nat %strikes))) ; CONS } { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 2 ; SENDER ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; PUSH nat 32 ; DUP 2 ; SIZE ; COMPARE ; EQ ; IF {} { PUSH string "BAD_HASH" ; FAILWITH } ; DUP 2 ; GET 7 ; DUP 2 ; MEM ; IF { PUSH string "COMMIT_EXISTS" ; FAILWITH } {} ; SWAP ; DUP ; GET 7 ; SENDER ; NOW ; PAIR ; SOME ; DUP 4 ; UPDATE ; UPDATE 7 ; SWAP ; NIL operation ; SWAP ; SENDER ; PAIR ; EMIT %name_committed (pair (address %account) (bytes %commit)) ; CONS } } { IF_LEFT { DUP 5 ; SENDER ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 5 ; DUG 5 ; DIG 4 ; DIG 5 ; PUSH nat 32 ; DUP 2 ; CDR ; SIZE ; COMPARE ; EQ ; IF {} { PUSH string "BAD_HASH" ; FAILWITH } ; DUP 2 ; GET 21 ; SENDER ; MEM ; IF {} { PUSH string "NOT_REGISTERED" ; FAILWITH } ; DUP 2 ; GET 15 ; DUP 2 ; CDR ; MEM ; IF { PUSH string "NAME_TAKEN" ; FAILWITH } {} ; DUP 2 ; GET 17 ; DIG 2 ; DUP ; GET 5 ; PUSH bool False ; SENDER ; DUP 6 ; CDR ; DUP 7 ; CAR ; PAIR 4 ; SOME ; DUP 4 ; UPDATE ; UPDATE 5 ; DUP ; GET 15 ; AMOUNT ; PUSH bool False ; NOW ; DUP 6 ; PAIR 4 ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; SOME ; DUP 5 ; CDR ; UPDATE ; UPDATE 15 ; DUP ; GET 17 ; PUSH nat 1 ; ADD ; UPDATE 17 ; DUG 2 ; NIL operation ; DIG 2 ; CDR ; DIG 2 ; SENDER ; PAIR 3 ; EMIT %channel_created (pair (address %account) (pair (nat %cid) (bytes %name_hash))) ; CONS } { IF_LEFT { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 15 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_NAME" ; FAILWITH } ; DUP 2 ; GET 15 ; DUP 2 ; GET ; IF_NONE { PUSH int 332 ; FAILWITH } {} ; DUP ; GET 5 ; IF { PUSH string "ALREADY_FINAL" ; FAILWITH } {} ; PUSH int 86400 ; DUP 4 ; GET 27 ; MUL ; DUP 2 ; GET 3 ; ADD ; NOW ; COMPARE ; GT ; IF {} { PUSH string "WINDOW_OPEN" ; FAILWITH } ; DIG 2 ; DUP ; GET 28 ; DUP 3 ; GET 6 ; ADD ; UPDATE 28 ; DUP ; GET 15 ; DUP 3 ; GET 6 ; PUSH bool True ; DUP 5 ; GET 3 ; DUP 6 ; CAR ; PAIR 4 ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; SOME ; DIG 3 ; UPDATE ; UPDATE 15 ; NIL operation } { DUP 5 ; SENDER ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 5 ; DUG 5 ; DIG 4 ; DIG 5 ; PUSH nat 32 ; DUP 2 ; GET 6 ; SIZE ; COMPARE ; EQ ; IF {} { PUSH string "BAD_HASH" ; FAILWITH } ; DUP 2 ; GET 15 ; DUP 2 ; GET 6 ; MEM ; IF { DUP 2 ; GET 15 ; DUP 2 ; GET 6 ; GET ; IF_NONE { PUSH int 171 ; FAILWITH } {} ; CAR ; PUSH bool False ; DUP 4 ; GET 21 ; SENDER ; MEM ; IF { DROP ; DUP 3 ; GET 21 ; SENDER ; GET ; IF_NONE { PUSH int 174 ; FAILWITH } {} ; COMPARE ; EQ } { SWAP ; DROP } ; IF {} { PUSH string "NAME_TAKEN" ; FAILWITH } } {} ; PUSH nat 0 ; DUP 3 ; GET 23 ; SENDER ; MEM ; IF { DROP ; DUP 2 ; GET 23 ; SENDER ; GET ; IF_NONE { PUSH int 178 ; FAILWITH } {} ; GET 4 } {} ; DIG 2 ; DUP ; GET 23 ; DUP 3 ; DUP 5 ; GET 3 ; DUP 6 ; CAR ; PAIR 3 ; SOME ; SENDER ; UPDATE ; UPDATE 23 ; DUG 2 ; DUP 3 ; GET 21 ; SENDER ; MEM ; IF { DUP 3 ; GET 21 ; SENDER ; GET ; IF_NONE { PUSH int 183 ; FAILWITH } {} ; DUP 4 ; GET 5 ; DUP 2 ; GET ; IF_NONE { PUSH int 184 ; FAILWITH } {} ; GET 3 ; DUP 4 ; GET 6 ; DUP 2 ; COMPARE ; NEQ ; IF { DUP 5 ; GET 15 ; DUP 2 ; MEM ; IF { DUP 5 ; GET 15 ; DUP 2 ; GET ; IF_NONE { PUSH int 189 ; FAILWITH } {} ; GET 5 ; IF {} { DUP 5 ; DUP ; GET 28 ; DIG 6 ; GET 15 ; DUP 4 ; GET ; IF_NONE { PUSH int 190 ; FAILWITH } {} ; GET 6 ; ADD ; UPDATE 28 ; DUG 4 } ; DIG 4 ; DUP ; GET 15 ; NONE (pair nat (pair timestamp (pair bool mutez))) ; DUP 4 ; UPDATE ; UPDATE 15 ; DUG 4 } {} ; DIG 4 ; DUP ; GET 15 ; AMOUNT ; PUSH bool False ; NOW ; DUP 7 ; PAIR 4 ; SOME ; DUP 7 ; GET 6 ; UPDATE ; UPDATE 15 ; DUG 4 } { DIG 4 ; DUP ; GET 28 ; AMOUNT ; ADD ; UPDATE 28 ; DUG 4 } ; DIG 4 ; DUP ; GET 5 ; PUSH bool True ; SENDER ; DUP 8 ; GET 6 ; DUP 9 ; GET 5 ; PAIR 4 ; DIG 3 ; DROP ; SOME ; DIG 3 ; UPDATE ; UPDATE 5 ; DUG 2 } { DUP 3 ; GET 17 ; DIG 3 ; DUP ; GET 5 ; PUSH bool True ; SENDER ; DUP 7 ; GET 6 ; DUP 8 ; GET 5 ; PAIR 4 ; SOME ; DUP 4 ; UPDATE ; UPDATE 5 ; DUP ; GET 15 ; AMOUNT ; PUSH bool False ; NOW ; DUP 6 ; PAIR 4 ; SOME ; DUP 6 ; GET 6 ; UPDATE ; UPDATE 15 ; DUP ; GET 21 ; DIG 2 ; SOME ; SENDER ; UPDATE ; UPDATE 21 ; DUP ; GET 17 ; PUSH nat 1 ; ADD ; UPDATE 17 ; DUG 2 } ; NIL operation ; DUP ; DUP 4 ; GET 6 ; DUP 5 ; GET 3 ; DUP 7 ; GET 21 ; SENDER ; GET ; IF_NONE { PUSH int 213 ; FAILWITH } {} ; DUP 7 ; CAR ; SENDER ; PAIR 5 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; EMIT %registered (pair (address %account) (pair (key %burner_key) (pair (nat %cid) (pair (bytes %enc_key) (bytes %name_hash))))) ; CONS } } } } { IF_LEFT { IF_LEFT { DUP 5 ; SENDER ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 5 ; DUG 5 ; DIG 4 ; DIG 5 ; PUSH nat 32 ; DUP 2 ; GET 4 ; SIZE ; COMPARE ; EQ ; IF {} { PUSH string "BAD_HASH" ; FAILWITH } ; DUP 2 ; GET 5 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 5 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 242 ; FAILWITH } {} ; SENDER ; DUP 2 ; GET 5 ; COMPARE ; EQ ; IF {} { PUSH string "NOT_OWNER" ; FAILWITH } ; DUP 2 ; GET 4 ; DUP 2 ; GET 3 ; COMPARE ; NEQ ; IF { DUP 3 ; GET 15 ; DUP 3 ; GET 4 ; MEM ; IF { PUSH string "NAME_TAKEN" ; FAILWITH } {} ; DUP 3 ; GET 15 ; DUP 2 ; GET 3 ; MEM ; IF { DUP 3 ; GET 15 ; DUP 2 ; GET 3 ; GET ; IF_NONE { PUSH int 247 ; FAILWITH } {} ; GET 5 ; IF {} { DUP 3 ; DUP ; GET 28 ; DIG 4 ; GET 15 ; DUP 4 ; GET 3 ; GET ; IF_NONE { PUSH int 248 ; FAILWITH } {} ; GET 6 ; ADD ; UPDATE 28 ; DUG 2 } ; DIG 2 ; DUP ; GET 15 ; NONE (pair nat (pair timestamp (pair bool mutez))) ; DUP 4 ; GET 3 ; UPDATE ; UPDATE 15 ; DUG 2 } {} ; DIG 2 ; DUP ; GET 15 ; AMOUNT ; PUSH bool False ; NOW ; DUP 7 ; CAR ; PAIR 4 ; SOME ; DUP 5 ; GET 4 ; UPDATE ; UPDATE 15 ; DUG 2 } { DIG 2 ; DUP ; GET 28 ; AMOUNT ; ADD ; UPDATE 28 ; DUG 2 } ; DIG 2 ; DUP ; GET 5 ; DUP 3 ; GET 6 ; DUP 4 ; GET 5 ; DUP 6 ; GET 4 ; DUP 7 ; GET 3 ; PAIR 4 ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 5 ; NIL operation } { DUP 5 ; SENDER ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 5 ; DUG 5 ; DIG 4 ; DIG 5 ; DUP ; CAR ; BLAKE2B ; NIL bytes ; DUP 3 ; GET 4 ; CONS ; SENDER ; PACK ; CONS ; DUP 2 ; CONS ; CONCAT ; BLAKE2B ; DUP 4 ; GET 7 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_COMMIT" ; FAILWITH } ; DUP 4 ; GET 7 ; DUP 2 ; GET ; IF_NONE { PUSH int 282 ; FAILWITH } {} ; DUP 5 ; GET 11 ; DUP 2 ; CAR ; ADD ; NOW ; COMPARE ; GE ; IF {} { PUSH string "COMMIT_TOO_YOUNG" ; FAILWITH } ; PUSH mutez 0 ; DUP 8 ; DUP 6 ; CAR ; SWAP ; DIG 7 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DIG 10 ; DIG 10 ; DIG 10 ; DIG 10 ; DIG 5 ; DUG 10 ; DUG 10 ; DUG 10 ; DUG 10 ; DUG 10 ; IF {} { DROP ; DUP 6 ; DUP 5 ; CAR ; SIZE ; SWAP ; DIG 6 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 5 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 } ; DUP ; AMOUNT ; COMPARE ; GE ; IF {} { PUSH string "INSUFFICIENT_FEE" ; FAILWITH } ; SENDER ; DUP 3 ; CDR ; COMPARE ; NEQ ; IF { DUP 10 ; DUP 3 ; CDR ; SWAP ; DIG 7 ; DIG 2 ; PAIR ; EXEC ; CDR ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 4 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 ; DIG 9 } {} ; DUP 2 ; CAR ; DIG 6 ; DUP ; GET 7 ; NONE (pair timestamp address) ; DUP 7 ; UPDATE ; UPDATE 7 ; DUG 6 ; PUSH bool False ; DUP 8 ; GET 15 ; DUP 7 ; MEM ; IF { DUP 8 ; GET 15 ; DUP 7 ; GET ; IF_NONE { PUSH int 297 ; FAILWITH } {} ; DUP ; GET 3 ; DUP 4 ; COMPARE ; LT ; IF { DUP ; GET 5 ; NOT } { PUSH bool False } ; IF { PUSH int 86400 ; DUP 10 ; GET 27 ; MUL ; DUP 2 ; GET 3 ; ADD ; NOW ; COMPARE ; LE } { PUSH bool False } ; DUP ; IF { DUP 10 ; GET 5 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 302 ; FAILWITH } {} ; GET 5 ; DUP 11 ; DUP ; GET 25 ; DUP 5 ; GET 6 ; DIG 13 ; GET 25 ; DUP 5 ; GET ; IF_NONE { PUSH mutez 0 } {} ; ADD ; SOME ; DUP 4 ; UPDATE ; UPDATE 25 ; DUG 10 ; DUP 11 ; GET 5 ; DUP 4 ; CAR ; GET ; IF_NONE { PUSH int 304 ; FAILWITH } {} ; DIG 11 ; DUP ; GET 5 ; DUP 3 ; GET 6 ; DUP 4 ; GET 5 ; PUSH bytes 0x ; DUP 6 ; CAR ; PAIR 4 ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 5 ; DUG 6 ; PUSH bool True } { DROP 2 ; DUP 8 ; DUP ; GET 25 ; AMOUNT ; DIG 10 ; GET 25 ; SENDER ; GET ; IF_NONE { PUSH mutez 0 } {} ; ADD ; SOME ; SENDER ; UPDATE ; UPDATE 25 ; DUG 7 } } { DROP ; PUSH bool True } ; DUP ; IF { DUP 8 ; GET 17 ; DIG 8 ; DUP ; GET 5 ; PUSH bool False ; SENDER ; DUP 11 ; DUP 13 ; GET 3 ; PAIR 4 ; SOME ; DUP 4 ; UPDATE ; UPDATE 5 ; DUP ; GET 15 ; AMOUNT ; PUSH bool False ; DUP 7 ; DUP 6 ; PAIR 4 ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; SOME ; DUP 5 ; UPDATE ; UPDATE 15 ; DUP ; GET 17 ; PUSH nat 1 ; ADD ; UPDATE 17 ; DUG 2 ; NIL operation ; DUG 2 ; SENDER ; PAIR 3 ; EMIT %name_revealed (pair (address %account) (pair (nat %cid) (bytes %name_hash))) ; CONS } { DROP 7 ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; NIL operation } } } { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 23 ; SENDER ; MEM ; IF {} { PUSH string "NOT_REGISTERED" ; FAILWITH } ; DUP 2 ; GET 23 ; SENDER ; GET ; IF_NONE { PUSH int 389 ; FAILWITH } {} ; DIG 2 ; DUP ; GET 23 ; PUSH nat 1 ; DUP 4 ; GET 4 ; ADD ; DUP 4 ; GET 3 ; DIG 5 ; PAIR 3 ; SOME ; SENDER ; UPDATE ; UPDATE 23 ; SWAP ; NIL operation ; PUSH nat 1 ; DIG 2 ; GET 4 ; ADD ; SENDER ; PAIR ; EMIT %session_rotated (pair (address %account) (nat %session_nonce)) ; CONS } { IF_LEFT { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 19 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_OWNER" ; FAILWITH } ; DUP 2 ; GET 28 ; DIG 2 ; PUSH mutez 0 ; UPDATE 28 ; DUG 2 ; PUSH mutez 0 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP ; DIG 2 ; DROP ; NIL operation ; DUP 3 ; GET 19 ; CONTRACT unit ; IF_NONE { PUSH int 382 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 ; SWAP ; DROP ; NIL operation } } { DROP ; SWAP ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP ; GET 25 ; SENDER ; GET ; IF_NONE { PUSH mutez 0 } {} ; PUSH mutez 0 ; DUP 2 ; COMPARE ; GT ; IF {} { PUSH string "NO_REFUND" ; FAILWITH } ; SWAP ; DUP ; GET 25 ; PUSH (option mutez) (Some 0) ; SENDER ; UPDATE ; UPDATE 25 ; SWAP ; NIL operation ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 373 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } } } } ; PAIR } ; view "price_of" bytes mutez { UNPAIR ; LAMBDA (pair bytes (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) (pair bool (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) { UNPAIR ; DUP ; SIZE ; PUSH bool False ; PUSH nat 0 ; PUSH nat 0 ; DUP 4 ; DUP 2 ; COMPARE ; LT ; LOOP { DUP 3 ; IF {} { PUSH bytes 0x23 ; DUP 6 ; PUSH nat 1 ; DUP 4 ; SLICE ; IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ; COMPARE ; EQ ; IF { SWAP ; DROP ; SWAP ; DROP ; PUSH bool True ; SWAP ; DUP } {} } ; PUSH nat 1 ; ADD ; DUP 4 ; DUP 2 ; COMPARE ; LT } ; DROP ; PUSH bool False ; DIG 2 ; IF { DIG 3 ; DROP ; DUP 4 ; GET 13 ; PUSH int 1 ; DIG 3 ; DIG 4 ; SUB ; SUB ; ISNAT ; IF_NONE { PUSH int 128 ; FAILWITH } {} ; COMPARE ; GE ; IF { DROP ; PUSH bool True } {} } { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; PAIR } ; SWAP ; LAMBDA (pair nat (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) (pair mutez (pair (big_map address (pair nat timestamp)) (pair mutez (pair (big_map nat (pair bytes (pair bytes (pair address bool)))) (pair (big_map bytes (pair timestamp address)) (pair mutez (pair int (pair nat (pair (big_map bytes (pair nat (pair timestamp (pair bool mutez)))) (pair nat (pair address (pair (big_map address nat) (pair (big_map address (pair key (pair bytes nat))) (pair (big_map address mutez) (pair int mutez))))))))))))))) { UNPAIR ; DUP 2 ; GET 3 ; PUSH nat 1 ; DUP 3 ; DUP 2 ; COMPARE ; LT ; IF { DUP 4 ; GET 9 ; DUP 3 ; COMPARE ; GT } { PUSH bool False } ; LOOP { PUSH nat 4 ; PUSH nat 1 ; DIG 3 ; MUL ; EDIV ; IF_NONE { PUSH int 102 ; FAILWITH } {} ; CAR ; SWAP ; PUSH nat 1 ; ADD ; DUP 3 ; DUP 2 ; COMPARE ; LT ; IF { DUP 4 ; GET 9 ; DUP 3 ; COMPARE ; GT } { PUSH bool False } } ; DUP 2 ; DUP 5 ; GET 9 ; DUP 2 ; COMPARE ; LT ; IF { DROP 4 ; DUP ; GET 9 } { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; PAIR } ; SWAP ; PUSH mutez 0 ; DUP 4 ; DUP 3 ; SWAP ; DIG 6 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUG 5 ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } { DROP ; DIG 2 ; DROP ; SIZE ; SWAP ; DUG 2 ; PAIR ; EXEC ; CAR } } ; view "compute_commit" (pair (bytes %name) (pair (address %owner) (bytes %salt))) bytes { CAR ; DUP ; CAR ; BLAKE2B ; NIL bytes ; DUP 3 ; GET 4 ; CONS ; DIG 2 ; GET 3 ; PACK ; CONS ; SWAP ; CONS ; CONCAT ; BLAKE2B } ; view "name_status" bytes (option (pair (nat %cid) (pair (timestamp %committed) (pair (bool %final) (mutez %paid))))) { UNPAIR ; SWAP ; GET 15 ; SWAP ; GET } ; view "is_account_banned" address (option timestamp) { UNPAIR ; NONE timestamp ; DUP 3 ; CAR ; DUP 3 ; MEM ; IF { DUP 3 ; CAR ; DUP 3 ; GET ; IF_NONE { PUSH int 424 ; FAILWITH } {} ; CDR ; NOW ; COMPARE ; LE ; IF { DROP ; SWAP ; CAR ; SWAP ; GET ; IF_NONE { PUSH int 425 ; FAILWITH } {} ; CDR ; SOME } { SWAP ; DROP ; SWAP ; DROP } } { SWAP ; DROP ; SWAP ; DROP } } ; view "get_enc_key" address bytes { UNPAIR ; DUP 2 ; GET 23 ; DUP 2 ; MEM ; IF {} { PUSH string "NOT_REGISTERED" ; FAILWITH } ; SWAP ; GET 23 ; SWAP ; GET ; IF_NONE { PUSH int 432 ; FAILWITH } {} ; GET 3 } ; view "get_burner_key" address key { UNPAIR ; DUP 2 ; GET 23 ; DUP 2 ; MEM ; IF {} { PUSH string "NOT_REGISTERED" ; FAILWITH } ; SWAP ; GET 23 ; SWAP ; GET ; IF_NONE { PUSH int 438 ; FAILWITH } {} ; CAR } ; view "get_session_nonce" address nat { UNPAIR ; PUSH nat 0 ; DUP 3 ; GET 23 ; DUP 3 ; MEM ; IF { DROP ; SWAP ; GET 23 ; SWAP ; GET ; IF_NONE { PUSH int 445 ; FAILWITH } {} ; GET 4 } { SWAP ; DROP ; SWAP ; DROP } } ; view "get_channel" nat (pair (bytes %name_enc) (pair (bytes %name_hash) (pair (address %owner) (bool %primary)))) { UNPAIR ; DUP 2 ; GET 5 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; SWAP ; GET 5 ; SWAP ; GET ; IF_NONE { PUSH int 452 ; FAILWITH } {} } ; view "resolve_name" bytes (option nat) { UNPAIR ; NONE nat ; DUP 3 ; GET 15 ; DUP 3 ; MEM ; IF { DROP ; SWAP ; GET 15 ; SWAP ; GET ; IF_NONE { PUSH int 459 ; FAILWITH } {} ; CAR ; SOME } { SWAP ; DROP ; SWAP ; DROP } } ; view "get_primary" address (option nat) { UNPAIR ; SWAP ; GET 21 ; SWAP ; GET } ; view "get_next_cid" unit nat { CDR ; GET 17 } }