Skip to content

Instantly share code, notes, and snippets.

@nginnever
Created April 17, 2020 17:35
Show Gist options
  • Save nginnever/f6e3c17d540b1a32275d9250385eb6c8 to your computer and use it in GitHub Desktop.
Save nginnever/f6e3c17d540b1a32275d9250385eb6c8 to your computer and use it in GitHub Desktop.
# atomex.tz
{ parameter
(or (or (pair %initiate
(pair (pair (bytes %hashedSecret) (address %participant))
(pair (nat %payoffAmount) (timestamp %refundTime)))
(pair (address %tokenAddress) (nat %totalAmount)))
(bytes %redeem))
(bytes %refund)) ;
storage
(pair (big_map
bytes
(pair (pair (pair (address %initiator) (address %participant))
(pair (nat %payoffAmount) (timestamp %refundTime)))
(pair (address %tokenAddress) (nat %totalAmount))))
unit) ;
code { DUP ;
LAMBDA
(pair (pair address address) (pair address nat))
operation
{ DUP ;
CAR ;
CAR ;
CONTRACT %transfer (pair address (pair address nat)) ;
IF_NONE
{ PUSH string "bad address for get_entrypoint (%transfer)" ; FAILWITH }
{} ;
DIP { DUP } ;
SWAP ;
CAR ;
CDR ;
DIP { DIP { DUP } ;
SWAP ;
CDR ;
CAR ;
DIP { DIP { DUP } ; SWAP ; CDR ; CDR } ;
PAIR } ;
PAIR ;
DIP { DUP ; PUSH mutez 0 } ;
TRANSFER_TOKENS ;
DUP ;
DIP { DROP 3 } } ;
SWAP ;
CDR ;
AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
NEQ ;
IF { PUSH string "This contract do not accept tez" ; FAILWITH }
{ PUSH unit Unit } ;
DIP 3 { DUP } ;
DIG 3 ;
CAR ;
IF_LEFT
{ DUP ;
IF_LEFT
{ DUP ;
DIP { DIP 3 { DUP } ; DIG 3 } ;
PAIR ;
DUP ;
CAR ;
DIP { DUP } ;
SWAP ;
CDR ;
DIP { DUP } ;
SWAP ;
CAR ;
CDR ;
CAR ;
DIP { DIP { DUP } ; SWAP ; CDR ; CDR } ;
COMPARE ;
GT ;
IF { PUSH string "" ; FAILWITH } { PUSH unit Unit } ;
DIP 2 { DUP } ;
DIG 2 ;
CAR ;
CDR ;
CDR ;
NOW ;
SWAP ;
COMPARE ;
LE ;
IF { PUSH string "" ; FAILWITH } { PUSH unit Unit } ;
DIP 3 { DUP } ;
DIG 3 ;
CAR ;
CAR ;
CAR ;
SIZE ;
PUSH nat 32 ;
COMPARE ;
NEQ ;
IF { PUSH string "" ; FAILWITH } { PUSH unit Unit } ;
DIP 4 { DUP } ;
DIG 4 ;
CAR ;
CAR ;
CDR ;
SOURCE ;
SWAP ;
COMPARE ;
EQ ;
IF { PUSH string "" ; FAILWITH } { PUSH unit Unit } ;
DIP 5 { DUP } ;
DIG 5 ;
CAR ;
CAR ;
CAR ;
DIP { DIP 4 { DUP } ; DIG 4 ; CAR } ;
GET ;
IF_NONE
{ DIP 4 { DUP } ;
DIG 4 ;
DIP 5 { DUP } ;
DIG 5 ;
DIP 7 { DUP } ;
DIG 7 ;
CAR ;
CAR ;
CAR ;
DIP { DIP 7 { DUP } ;
DIG 7 ;
CAR ;
CAR ;
CDR ;
SOURCE ;
PAIR ;
DIP { DIP 7 { DUP } ;
DIG 7 ;
CAR ;
CDR ;
CAR ;
DIP { DIP 7 { DUP } ; DIG 7 ; CAR ; CDR ; CDR } ;
PAIR } ;
PAIR ;
DIP { DIP 7 { DUP } ;
DIG 7 ;
CDR ;
CAR ;
DIP { DIP 7 { DUP } ; DIG 7 ; CDR ; CDR } ;
PAIR } ;
PAIR ;
SOME ;
DIP { DIP 6 { DUP } ; DIG 6 ; CAR } } ;
UPDATE ;
SWAP ;
CDR ;
SWAP ;
PAIR ;
DIP { DROP } }
{ PUSH string "" ; FAILWITH } ;
DIP 6 { DUP } ;
DIG 6 ;
CDR ;
CAR ;
SOURCE ;
SWAP ;
PAIR ;
DIP { SELF ; ADDRESS ; DIP { DIP 6 { DUP } ; DIG 6 ; CDR ; CDR } ; PAIR } ;
PAIR ;
DIP { DIP 12 { DUP } ; DIG 12 } ;
EXEC ;
DUP ;
NIL operation ;
SWAP ;
CONS ;
DIP { DIP { DUP } ; SWAP } ;
PAIR ;
DIP { DROP 10 } }
{ DUP ;
DIP { DIP 3 { DUP } ; DIG 3 } ;
PAIR ;
DUP ;
CAR ;
DIP { DUP } ;
SWAP ;
CDR ;
DIP { DUP } ;
SWAP ;
SIZE ;
PUSH nat 32 ;
COMPARE ;
NEQ ;
IF { PUSH string "" ; FAILWITH } { PUSH unit Unit } ;
DIP 2 { DUP } ;
DIG 2 ;
SHA256 ;
SHA256 ;
DUP ;
DIP { DIP 2 { DUP } ; DIG 2 ; CAR } ;
GET ;
IF_NONE { PUSH string "MAP FIND" ; FAILWITH } {} ;
DUP ;
CAR ;
CDR ;
CDR ;
NOW ;
COMPARE ;
GE ;
IF { PUSH string "" ; FAILWITH } { PUSH unit Unit } ;
DIP 4 { DUP } ;
DIG 4 ;
DIP 3 { DUP } ;
DIG 3 ;
DIP { DIP 5 { DUP } ;
DIG 5 ;
CAR ;
NONE (pair (pair (pair (address %initiator) (address %participant))
(pair (nat %payoffAmount) (timestamp %refundTime)))
(pair (address %tokenAddress) (nat %totalAmount))) } ;
UPDATE ;
SWAP ;
CDR ;
SWAP ;
PAIR ;
DIP 2 { DUP } ;
DIG 2 ;
CDR ;
CDR ;
DIP { DIP 2 { DUP } ; DIG 2 ; CAR ; CDR ; CAR } ;
SUB ;
ABS ;
DIP 3 { DUP } ;
DIG 3 ;
CDR ;
CAR ;
DIP { SELF ; ADDRESS } ;
PAIR ;
DIP { DIP 3 { DUP } ; DIG 3 ; CAR ; CAR ; CDR ; DIP { DUP } ; PAIR } ;
PAIR ;
DIP { DIP 13 { DUP } ; DIG 13 } ;
EXEC ;
DIP 4 { DUP } ;
DIG 4 ;
CDR ;
CAR ;
DIP { DIP 4 { DUP } ; DIG 4 ; CAR ; CDR ; CAR } ;
PAIR ;
DUP ;
CDR ;
DUP ;
PUSH nat 0 ;
SWAP ;
COMPARE ;
GT ;
IF { DIP { DUP } ;
SWAP ;
CAR ;
DIP { SELF ; ADDRESS } ;
PAIR ;
DIP { DUP ; SOURCE ; PAIR } ;
PAIR ;
DIP { DIP 16 { DUP } ; DIG 16 } ;
EXEC ;
NIL operation ;
SWAP ;
CONS }
{ NIL operation } ;
DIP { DROP 2 ; DUP } ;
SWAP ;
DIP { DUP } ;
CONS ;
DIP { DIP 3 { DUP } ; DIG 3 } ;
PAIR ;
DIP { DROP 12 } } ;
DIP { DROP } }
{ DUP ;
DIP { DIP 2 { DUP } ; DIG 2 } ;
PAIR ;
DUP ;
CAR ;
DIP { DUP } ;
SWAP ;
CDR ;
DIP { DUP } ;
SWAP ;
DIP { DUP ; CAR } ;
GET ;
IF_NONE { PUSH string "MAP FIND" ; FAILWITH } {} ;
DUP ;
CAR ;
CDR ;
CDR ;
NOW ;
COMPARE ;
LT ;
IF { PUSH string "" ; FAILWITH } { PUSH unit Unit } ;
DIP 2 { DUP } ;
DIG 2 ;
DIP 4 { DUP } ;
DIG 4 ;
DIP { DIP 3 { DUP } ;
DIG 3 ;
CAR ;
NONE (pair (pair (pair (address %initiator) (address %participant))
(pair (nat %payoffAmount) (timestamp %refundTime)))
(pair (address %tokenAddress) (nat %totalAmount))) } ;
UPDATE ;
SWAP ;
CDR ;
SWAP ;
PAIR ;
DIP 2 { DUP } ;
DIG 2 ;
CDR ;
CAR ;
DIP { SELF ; ADDRESS } ;
PAIR ;
DIP { DIP 2 { DUP } ;
DIG 2 ;
CAR ;
CAR ;
CAR ;
DIP { DIP 2 { DUP } ; DIG 2 ; CDR ; CDR } ;
PAIR } ;
PAIR ;
DIP { DIP 9 { DUP } ; DIG 9 } ;
EXEC ;
DUP ;
NIL operation ;
SWAP ;
CONS ;
DIP { DIP { DUP } ; SWAP } ;
PAIR ;
DIP { DROP 8 } } ;
DIP { DROP 4 } } }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment