x
680
parameter (or
(or (or (unit %default) (unit %freeze_metadata))
(or (nat %mint) (pair %oracle_callback string (pair timestamp nat))))
(or
(or (address %register_fa2)
(pair %reserve_giveaways (address %address) (nat %amount)))
(or
(list %reveal_metadata (pair (nat %token_id)
(map %token_info string bytes)))
(unit %start_sale))));
storage (pair
(pair
(pair (pair (address %admin) (address %artist))
(pair (option %fa2 address) (bool %freeze_metadata)))
(pair (pair (nat %giveaway_amount) (nat %giveaway_index))
(pair (nat %max_mint) (nat %max_supply))))
(pair
(pair (pair (big_map %metadata string bytes) (nat %mint_index))
(pair (nat %n_minted) (address %oracle)))
(pair (pair (bool %oracle_callback_expected) (bytes %placeholder_ipfs_path))
(pair (mutez %price)
(pair (string %provenance_hash) (bool %sale_started))))));
code { CAST (pair
(or (or (or unit unit) (or nat (pair string (pair timestamp nat))))
(or (or address (pair address nat))
(or (list (pair nat (map string bytes))) unit)))
(pair
(pair (pair (pair address address) (pair (option address) bool))
(pair (pair nat nat) (pair nat nat)))
(pair (pair (pair (big_map string bytes) nat) (pair nat address))
(pair (pair bool bytes) (pair mutez (pair string bool)))))) ;
{ { DUP ; CAR ; DIP { CDR } } } ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ DROP ;
NIL operation ;
SENDER ;
CONTRACT unit ;
IF_NONE { PUSH int 53 ; FAILWITH } {} ;
AMOUNT ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ DROP ;
DUP ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{}
{ PUSH string "WrongCondition: sp.sender == self.data.admin" ;
FAILWITH } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
CAR ;
PUSH bool True ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
PAIR ;
NIL operation } }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
GET 10 ;
IF {} { PUSH string "Sale hasn't started yet" ; FAILWITH } ;
SWAP ;
DUP ;
CAR ;
GET 6 ;
SWAP ;
DUP ;
DUG 3 ;
GET 3 ;
GET 3 ;
COMPARE ;
LT ;
IF {} { PUSH string "Sold out" ; FAILWITH } ;
DUP ;
PUSH nat 0 ;
COMPARE ;
LT ;
IF {} { PUSH string "Need to mint at least one" ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
GET 5 ;
SWAP ;
DUP ;
DUG 2 ;
COMPARE ;
LE ;
IF
{}
{ PUSH string "Can only mint a maximum of 10 at a time" ; FAILWITH } ;
SWAP ;
DUP ;
CAR ;
GET 6 ;
SWAP ;
DUP ;
DUG 3 ;
GET 3 ;
GET 3 ;
{ DIP 2 { DUP } ; DIG 3 } ;
ADD ;
COMPARE ;
LE ;
IF
{}
{ PUSH string "Requesting to mint more than left" ; FAILWITH } ;
PUSH mutez 1 ;
{ DIP 2 { DUP } ; DIG 3 } ;
GET 7 ;
EDIV ;
IF_NONE { UNIT ; FAILWITH } {} ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
MUL ;
PUSH mutez 1 ;
AMOUNT ;
EDIV ;
IF_NONE { UNIT ; FAILWITH } {} ;
CAR ;
COMPARE ;
GE ;
IF {} { PUSH string "Insufficient funds for minting" ; FAILWITH } ;
DUP ;
NIL operation ;
SWAP ;
{ DIP 3 { DUP } ; DIG 4 } ;
GET 3 ;
CAR ;
CDR ;
ADD ;
{ DIP 3 { DUP } ; DIG 4 } ;
GET 3 ;
CAR ;
CDR ;
DUP ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
GT ;
LOOP { PUSH nat 1 ;
{ DIP 5 { DUP } ; DIG 6 } ;
CAR ;
GET 6 ;
{ DIP 2 { DUP } ; DIG 3 } ;
EDIV ;
IF_NONE { PUSH int 87 ; FAILWITH } { CDR } ;
ADD ;
NIL bytes ;
PUSH nat 0 ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
EQ ;
IF
{ PUSH (map int bytes) { Elt 0 0x30 ;
Elt 1 0x31 ;
Elt 2 0x32 ;
Elt 3 0x33 ;
Elt 4 0x34 ;
Elt 5 0x35 ;
Elt 6 0x36 ;
Elt 7 0x37 ;
Elt 8 0x38 ;
Elt 9 0x39 } ;
PUSH int 0 ;
GET ;
IF_NONE { PUSH int 19 ; FAILWITH } {} ;
CONS }
{} ;
PUSH nat 0 ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
GT ;
LOOP { PUSH (map nat bytes) { Elt 0 0x30 ;
Elt 1 0x31 ;
Elt 2 0x32 ;
Elt 3 0x33 ;
Elt 4 0x34 ;
Elt 5 0x35 ;
Elt 6 0x36 ;
Elt 7 0x37 ;
Elt 8 0x38 ;
Elt 9 0x39 } ;
PUSH nat 10 ;
{ DIP 3 { DUP } ; DIG 4 } ;
EDIV ;
IF_NONE { PUSH int 21 ; FAILWITH } { CDR } ;
GET ;
IF_NONE { PUSH int 21 ; FAILWITH } {} ;
CONS ;
PUSH nat 10 ;
DIG 2 ;
EDIV ;
IF_NONE { PUSH int 22 ; FAILWITH } { CAR } ;
SWAP ;
PUSH nat 0 ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
GT } ;
SWAP ;
DROP ;
DIG 3 ;
{ DIP 5 { DUP } ; DIG 6 } ;
CAR ;
CAR ;
GET 3 ;
IF_NONE { PUSH int 154 ; FAILWITH } {} ;
CONTRACT %mint (pair (pair address nat)
(pair (map string bytes) nat)) ;
IF_NONE { PUSH int 155 ; FAILWITH } {} ;
PUSH mutez 0 ;
PUSH nat 1 ;
{ DIP 8 { DUP } ; DIG 9 } ;
CAR ;
GET 6 ;
{ DIP 6 { DUP } ; DIG 7 } ;
EDIV ;
IF_NONE { PUSH int 87 ; FAILWITH } { CDR } ;
ADD ;
EMPTY_MAP string bytes ;
DIG 5 ;
CONCAT ;
{ DIP 9 { DUP } ; DIG 10 } ;
GET 5 ;
CDR ;
CONCAT ;
SOME ;
PUSH string "" ;
UPDATE ;
PAIR ;
PUSH nat 1 ;
SENDER ;
PAIR ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
DUG 2 ;
PUSH nat 1 ;
ADD ;
DUP ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
GT } ;
DROP 2 ;
{ DIP 2 { DUP } ; DIG 3 } ;
CAR ;
CAR ;
CAR ;
CDR ;
CONTRACT unit ;
IF_NONE { PUSH int 92 ; FAILWITH } {} ;
PUSH nat 2 ;
AMOUNT ;
PUSH nat 1 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 90 ; FAILWITH } {} ;
CAR ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
{ DIP 2 { DUP } ; DIG 3 } ;
CAR ;
CAR ;
CAR ;
CAR ;
CONTRACT unit ;
IF_NONE { PUSH int 93 ; FAILWITH } {} ;
PUSH nat 2 ;
AMOUNT ;
PUSH nat 1 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 90 ; FAILWITH } {} ;
CAR ;
AMOUNT ;
SUB ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
{ DIP 2 { DUP } ; DIG 3 } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
CAR ;
{ DIP 6 { DUP } ; DIG 7 } ;
CAR ;
GET 6 ;
{ DIP 6 { DUP } ; DIG 7 } ;
DIG 8 ;
GET 3 ;
CAR ;
CDR ;
ADD ;
EDIV ;
IF_NONE { PUSH int 96 ; FAILWITH } { CDR } ;
SWAP ;
PAIR ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
DIG 6 ;
ADD ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
SWAP }
{ SWAP ;
DUP ;
DUG 2 ;
GET 5 ;
CAR ;
IF {} { PUSH string "No Callback Expected" ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
GET 4 ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "Only Oracle can Call Callback" ; FAILWITH } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
CDR ;
PUSH bool False ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
DUP ;
DUG 2 ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
CAR ;
DIG 5 ;
CAR ;
GET 6 ;
DIG 5 ;
GET 4 ;
EDIV ;
IF_NONE { PUSH int 137 ; FAILWITH } { CDR } ;
SWAP ;
PAIR ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
PUSH bool True ;
UPDATE 10 ;
NIL operation } } }
{ IF_LEFT
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "Only admin" ; FAILWITH } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
CDR ;
DIG 4 ;
SOME ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
PAIR ;
NIL operation }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "Only admin" ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
GET 3 ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
{ DIP 3 { DUP } ; DIG 4 } ;
CAR ;
GET 3 ;
CDR ;
ADD ;
COMPARE ;
LE ;
IF {} { PUSH string "reservations exhausted" ; FAILWITH } ;
DUP ;
CDR ;
NIL operation ;
SWAP ;
PUSH nat 0 ;
DUP ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
GT ;
LOOP { PUSH nat 1 ;
{ DIP 5 { DUP } ; DIG 6 } ;
CAR ;
GET 6 ;
{ DIP 2 { DUP } ; DIG 3 } ;
{ DIP 7 { DUP } ; DIG 8 } ;
GET 3 ;
CAR ;
CDR ;
ADD ;
EDIV ;
IF_NONE { PUSH int 67 ; FAILWITH } { CDR } ;
ADD ;
NIL bytes ;
PUSH nat 0 ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
EQ ;
IF
{ PUSH (map int bytes) { Elt 0 0x30 ;
Elt 1 0x31 ;
Elt 2 0x32 ;
Elt 3 0x33 ;
Elt 4 0x34 ;
Elt 5 0x35 ;
Elt 6 0x36 ;
Elt 7 0x37 ;
Elt 8 0x38 ;
Elt 9 0x39 } ;
PUSH int 0 ;
GET ;
IF_NONE { PUSH int 19 ; FAILWITH } {} ;
CONS }
{} ;
PUSH nat 0 ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
GT ;
LOOP { PUSH (map nat bytes) { Elt 0 0x30 ;
Elt 1 0x31 ;
Elt 2 0x32 ;
Elt 3 0x33 ;
Elt 4 0x34 ;
Elt 5 0x35 ;
Elt 6 0x36 ;
Elt 7 0x37 ;
Elt 8 0x38 ;
Elt 9 0x39 } ;
PUSH nat 10 ;
{ DIP 3 { DUP } ; DIG 4 } ;
EDIV ;
IF_NONE { PUSH int 21 ; FAILWITH } { CDR } ;
GET ;
IF_NONE { PUSH int 21 ; FAILWITH } {} ;
CONS ;
PUSH nat 10 ;
DIG 2 ;
EDIV ;
IF_NONE { PUSH int 22 ; FAILWITH } { CAR } ;
SWAP ;
PUSH nat 0 ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
GT } ;
SWAP ;
DROP ;
DIG 3 ;
{ DIP 5 { DUP } ; DIG 6 } ;
CAR ;
CAR ;
GET 3 ;
IF_NONE { PUSH int 154 ; FAILWITH } {} ;
CONTRACT %mint (pair (pair address nat)
(pair (map string bytes) nat)) ;
IF_NONE { PUSH int 155 ; FAILWITH } {} ;
PUSH mutez 0 ;
PUSH nat 1 ;
{ DIP 8 { DUP } ; DIG 9 } ;
CAR ;
GET 6 ;
{ DIP 6 { DUP } ; DIG 7 } ;
{ DIP 10 { DUP } ; DIG 11 } ;
GET 3 ;
CAR ;
CDR ;
ADD ;
EDIV ;
IF_NONE { PUSH int 67 ; FAILWITH } { CDR } ;
ADD ;
EMPTY_MAP string bytes ;
DIG 5 ;
CONCAT ;
{ DIP 9 { DUP } ; DIG 10 } ;
GET 5 ;
CDR ;
CONCAT ;
SOME ;
PUSH string "" ;
UPDATE ;
PAIR ;
PUSH nat 1 ;
{ DIP 7 { DUP } ; DIG 8 } ;
CAR ;
PAIR ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
DUG 2 ;
PUSH nat 1 ;
ADD ;
DUP ;
{ DIP 2 { DUP } ; DIG 3 } ;
COMPARE ;
GT } ;
DROP 2 ;
{ DIP 2 { DUP } ; DIG 3 } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
CAR ;
{ DIP 6 { DUP } ; DIG 7 } ;
CAR ;
GET 6 ;
{ DIP 6 { DUP } ; DIG 7 } ;
CDR ;
DIG 8 ;
GET 3 ;
CAR ;
CDR ;
ADD ;
EDIV ;
IF_NONE { PUSH int 68 ; FAILWITH } { CDR } ;
SWAP ;
PAIR ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ DIP 6 { DUP } ; DIG 7 } ;
CDR ;
ADD ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
DIG 6 ;
CDR ;
ADD ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP } }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{}
{ PUSH string "WrongCondition: sp.sender == self.data.admin" ;
FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
GET 4 ;
IF { PUSH string "metadata frozen" ; FAILWITH } {} ;
NIL operation ;
{ DIP 2 { DUP } ; DIG 3 } ;
CAR ;
CAR ;
GET 3 ;
IF_NONE { PUSH int 154 ; FAILWITH } {} ;
CONTRACT %update_token_metadata (list (pair nat (map string bytes))) ;
IF_NONE { PUSH int 176 ; FAILWITH } {} ;
PUSH mutez 0 ;
DIG 3 ;
TRANSFER_TOKENS ;
CONS }
{ DROP ;
DUP ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "Only admin" ; FAILWITH } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
SWAP ;
{ { DUP ; CAR ; DIP { CDR } } } ;
CDR ;
PUSH bool True ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
DUP ;
GET 3 ;
GET 4 ;
CONTRACT %get (pair string
(contract (pair string (pair timestamp nat)))) ;
IF_NONE { PUSH int 115 ; FAILWITH } {} ;
NIL operation ;
SWAP ;
PUSH mutez 0 ;
SELF_ADDRESS ;
CONTRACT %oracle_callback (pair string (pair timestamp nat)) ;
IF_NONE { PUSH int 121 ; FAILWITH } {} ;
PUSH string "XTZ-USD" ;
PAIR ;
TRANSFER_TOKENS ;
CONS } } } ;
NIL operation ;
SWAP ;
ITER { CONS } ;
PAIR }