Skip to content

Instantly share code, notes, and snippets.

@sax1johno

sax1johno/coase.tz

Created Jun 21, 2019
Embed
What would you like to do?
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