Skip to content

Instantly share code, notes, and snippets.

@sax1johno
Created June 21, 2019 21:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sax1johno/c9768720e69619c6853d9cf460013434 to your computer and use it in GitHub Desktop.
Save sax1johno/c9768720e69619c6853d9cf460013434 to your computer and use it in GitHub Desktop.
Contract:
{ parameter (or (or nat nat) (pair nat address)) ;
storage (pair (pair (map nat (pair mutez nat)) (map nat (pair address nat))) nat) ;
code { {} ;
{ { {} ;
{ {} ;
PUSH (lambda
(pair (pair nat address)
(pair (pair (map nat (pair mutez nat)) (map nat (pair address nat))) nat))
(pair (list operation)
(pair (pair (map nat (pair mutez nat)) (map nat (pair address nat))) nat)))
{ { {} ;
{ { {} ; { {} ; { { DUP } ; CAR } } ; { {} ; {} } } ;
{ {} ;
{ {} ; { { { DIP { DUP } ; SWAP } } ; CDR } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ; { { { { DUP } ; CAR } } ; CDR } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { DUP ;
{ { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
CAR } } ;
{ GET ; IF_NONE { { PUSH string "GET_FORCE" ; FAILWITH } } { {} } } } } ;
{ {} ; {} } } ;
{ { { PUSH string "\"This card doesn't belong to you\"" ;
{ { { {} ; SOURCE } ;
{ { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; CAR } } ;
{ COMPARE ; NEQ } } } ;
IF { { FAILWITH } } { { DROP ; PUSH unit Unit } } } ;
DROP } ;
{ { { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
CDR } ;
{ DIP { DUP } ; SWAP } ;
SWAP ;
{ DIP { { DUP ; CAR ; DIP { CDR } } } ; DIP { DROP } ; PAIR } ;
DIP { DROP } } ;
{ {} ;
{ {} ;
{ { { DIP { DUP } ; SWAP } ;
{ DIP { DUP } ; SWAP } ;
{ { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
CAR } } ;
{ DIP { SOME } ; UPDATE } } } ;
{ {} ; { SWAP ; DIP { DIP { DROP } } } } } ;
{ { DIP { DUP } ; SWAP } ;
{ DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } ;
SWAP ;
{ DIP { { DUP ; CAR ; DIP { CDR } } } ;
{ DIP { { DUP ; CDR ; DIP { CAR } } } ;
DIP { DROP } ;
{ SWAP ; PAIR } } ;
PAIR } ;
{ SWAP ; DIP { { SWAP ; DIP { DIP { DROP } } } } } } ;
{ {} ; { {} ; NIL operation } ; { {} ; {} } } } ;
{} ;
{ { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } ;
{ DIP { DUP } ; SWAP } } ;
PAIR } ;
DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { {} } ; DROP } } ; DROP } } ; DROP } } ;
DROP } } ;
DROP } } ;
DROP } } } } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
PUSH (lambda
(pair nat (pair (pair (map nat (pair mutez nat)) (map nat (pair address nat))) nat))
(pair (list operation)
(pair (pair (map nat (pair mutez nat)) (map nat (pair address nat))) nat)))
{ { {} ;
{ { {} ; { {} ; { { DUP } ; CAR } } ; { {} ; {} } } ;
{ {} ;
{ {} ; { { { DIP { DUP } ; SWAP } } ; CDR } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { { { { { DUP } ; CAR } } ; CDR } ;
{ DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ;
{ GET ; IF_NONE { { PUSH string "GET_FORCE" ; FAILWITH } } { {} } } } } ;
{ {} ; {} } } ;
{ { { PUSH string "\"This card doesn't belong to you\"" ;
{ { { {} ; SOURCE } ;
{ { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; CAR } } ;
{ COMPARE ; NEQ } } } ;
IF { { FAILWITH } } { { DROP ; PUSH unit Unit } } } ;
DROP } ;
{ {} ;
{ {} ;
{ { { { { { { DIP { DUP } ; SWAP } } ; CAR } } ; CAR } ;
{ { { DIP { DUP } ; SWAP } } ; CDR } } ;
{ GET ; IF_NONE { { PUSH string "GET_FORCE" ; FAILWITH } } { {} } } } } ;
{ {} ; {} } } ;
{ { { { { PUSH nat 1 ; { { { DIP { DUP } ; SWAP } } ; CDR } } ;
SUB } } ;
ABS } ;
{ DIP { DUP } ; SWAP } ;
SWAP ;
{ DIP { { DUP ; CDR ; DIP { CAR } } } ;
DIP { DROP } ;
{ SWAP ; PAIR } } ;
DIP { DROP } } ;
{ {} ;
{ {} ;
{ { { { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; CAR } } ;
CAR } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { DUP ;
{ DIP { { DIP { DUP } ; SWAP } } ; SWAP } ;
{ { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
CDR } } ;
{ DIP { SOME } ; UPDATE } } } ;
{ {} ; DIP { DROP } } } ;
{ DUP ;
{ DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } ;
SWAP ;
{ DIP { { DUP ; CAR ; DIP { CDR } } } ;
{ DIP { { DUP ; CAR ; DIP { CDR } } } ; DIP { DROP } ; PAIR } ;
PAIR } ;
{ SWAP ;
DIP { { SWAP ; DIP { { SWAP ; DIP { DIP { DROP } } } } } } } } ;
{ {} ;
{ {} ;
{ { { { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
CAR } } ;
CDR } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { DUP ;
{ DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } } ;
{ DIP { NONE (pair address nat) } ; UPDATE } } } ;
{ {} ; DIP { DROP } } } ;
{ DUP ;
{ DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } ;
SWAP ;
{ DIP { { DUP ; CAR ; DIP { CDR } } } ;
{ DIP { { DUP ; CDR ; DIP { CAR } } } ;
DIP { DROP } ;
{ SWAP ; PAIR } } ;
PAIR } ;
{ SWAP ;
DIP { { SWAP ;
DIP { { SWAP ; DIP { { SWAP ; DIP { DIP { DROP } } } } } } } } } } ;
{ {} ;
{ {} ;
{ { { { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; CDR } ;
{ { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
CAR } } ;
MUL } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { { {} ; SOURCE } } ;
{ CONTRACT unit ;
IF_NONE
{ { PUSH string "bad address for get_contract" ; FAILWITH } }
{ {} } } } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { DUP ;
{ DIP { { DIP { DUP } ; SWAP } } ; SWAP } ;
{ {} ; UNIT } } ;
TRANSFER_TOKENS } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ; { { NIL operation ; { DIP { DUP } ; SWAP } } ; CONS } } ;
{ {} ; {} } } } ;
{} ;
{ { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } ;
{ DIP { DUP } ; SWAP } } ;
PAIR } ;
DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { {} } ; DROP } } ; DROP } } ; DROP } } ;
DROP } } ;
DROP } } ;
DROP } } ;
DROP } } ;
DROP } } ;
DROP } } ;
DROP } } ;
DROP } } } } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
PUSH (lambda
(pair nat (pair (pair (map nat (pair mutez nat)) (map nat (pair address nat))) nat))
(pair (list operation)
(pair (pair (map nat (pair mutez nat)) (map nat (pair address nat))) nat)))
{ { {} ;
{ { {} ; { {} ; { { DUP } ; CAR } } ; { {} ; {} } } ;
{ {} ;
{ {} ; { { { DIP { DUP } ; SWAP } } ; CDR } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { { { { { DUP } ; CAR } } ; CAR } ;
{ DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ;
{ GET ; IF_NONE { { PUSH string "GET_FORCE" ; FAILWITH } } { {} } } } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { { { PUSH nat 1 ; { { { DIP { DUP } ; SWAP } } ; CDR } } ;
ADD } ;
{ { { DIP { DUP } ; SWAP } } ; CAR } } ;
MUL } } ;
{ {} ; {} } } ;
{ { { PUSH string "\"Not enough money\"" ;
{ { { {} ; AMOUNT } ;
{ DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ;
{ COMPARE ; GT } } } ;
IF { { FAILWITH } } { { DROP ; PUSH unit Unit } } } ;
DROP } ;
{ {} ; { {} ; NIL operation } ; { {} ; {} } } ;
{ { { PUSH nat 1 ;
{ { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
CDR } } ;
ADD } ;
{ DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } ;
SWAP ;
{ DIP { { DUP ; CDR ; DIP { CAR } } } ;
DIP { DROP } ;
{ SWAP ; PAIR } } ;
{ SWAP ; DIP { { SWAP ; DIP { DIP { DROP } } } } } } ;
{ {} ;
{ {} ;
{ { { { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
CAR } } ;
CAR } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { DUP ;
{ DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } ;
{ DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } } ;
{ DIP { SOME } ; UPDATE } } } ;
{ {} ; DIP { DROP } } } ;
{ DUP ;
{ DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } ;
SWAP ;
{ DIP { { DUP ; CAR ; DIP { CDR } } } ;
{ DIP { { DUP ; CAR ; DIP { CDR } } } ; DIP { DROP } ; PAIR } ;
PAIR } ;
{ SWAP ;
DIP { { SWAP ;
DIP { { SWAP ; DIP { { SWAP ; DIP { DIP { DROP } } } } } } } } } } ;
{ {} ;
{ {} ;
{ { { { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
CAR } } ;
CDR } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { DUP ;
{ { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } ;
{ {} ; SOURCE } } ;
PAIR } ;
{ { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } } ;
CDR } } ;
{ DIP { SOME } ; UPDATE } } } ;
{ {} ; DIP { DROP } } } ;
{ DUP ;
{ DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } ;
SWAP ;
{ DIP { { DUP ; CAR ; DIP { CDR } } } ;
{ DIP { { DUP ; CDR ; DIP { CAR } } } ;
DIP { DROP } ;
{ SWAP ; PAIR } } ;
PAIR } ;
{ SWAP ;
DIP { { SWAP ;
DIP { { SWAP ;
DIP { { SWAP ; DIP { { SWAP ; DIP { DIP { DROP } } } } } } } } } } } } ;
{ { { PUSH nat 1 ;
{ { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } } ;
CDR } } ;
ADD } ;
{ DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } ;
SWAP ;
{ DIP { { DUP ; CDR ; DIP { CAR } } } ;
DIP { DROP } ;
{ SWAP ; PAIR } } ;
{ SWAP ;
DIP { { SWAP ;
DIP { { SWAP ;
DIP { { SWAP ; DIP { { SWAP ; DIP { DIP { DROP } } } } } } } } } } } } } ;
{} ;
{ { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } ;
{ DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
PAIR } ;
DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { {} } ; DROP } } ; DROP } } ; DROP } } ;
DROP } } ;
DROP } } ;
DROP } } ;
DROP } } ;
DROP } } } } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
CAR } } ;
{ {} ; {} } } ;
{ {} ;
{ {} ;
{ { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
CDR } } ;
{ {} ; {} } } } ;
{} ;
{ { DIP { DUP } ; SWAP } ;
IF_LEFT
{ { { DUP ;
IF_LEFT
{ { { DUP ;
{ {} ;
{} ;
{ DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } ;
{} ;
{ { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } ;
{ DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ;
PAIR } ;
EXEC } ;
{} ;
DIP { { DIP { DIP { DIP { DIP { DIP { DIP { DIP { DIP { DIP { {} } } } } } } } } } ;
DROP } } } ;
{} ;
DIP { { DIP { DIP { DIP { DIP { DIP { DIP { DIP { DIP { {} } } } } } } } } ;
DROP } } } }
{ { { DUP ;
{ {} ;
{} ;
{ DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } ;
{} ;
{ { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } ;
{ DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ;
PAIR } ;
EXEC } ;
{} ;
DIP { { DIP { DIP { DIP { DIP { DIP { DIP { DIP { DIP { DIP { {} } } } } } } } } } ;
DROP } } } ;
{} ;
DIP { { DIP { DIP { DIP { DIP { DIP { DIP { DIP { DIP { {} } } } } } } } } ;
DROP } } } } } ;
{} ;
DIP { { DIP { DIP { DIP { DIP { DIP { DIP { DIP { {} } } } } } } } ;
DROP } } } }
{ { { DUP ;
{ {} ;
{} ;
{ DIP { { DIP { { DIP { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } } ;
SWAP } } ;
SWAP } } ;
SWAP } ;
{} ;
{ { { DIP { { DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ; SWAP } ;
{ DIP { { DIP { DUP } ; SWAP } } ; SWAP } } ;
PAIR } ;
EXEC } ;
{} ;
DIP { { DIP { DIP { DIP { DIP { DIP { DIP { DIP { DIP { {} } } } } } } } } ;
DROP } } } ;
{} ;
DIP { { DIP { DIP { DIP { DIP { DIP { DIP { DIP { {} } } } } } } } ;
DROP } } } } } ;
DIP { { DIP { { DIP { { DIP { { DIP { { DIP { { DIP { {} } ; DROP } } ; DROP } } ; DROP } } ;
DROP } } ;
DROP } } ;
DROP } } } }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment