Skip to content

Instantly share code, notes, and snippets.

@michaeljklein
Last active September 19, 2019 20:14
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 michaeljklein/b66e4cf1a129dd03b3f92e183c3616ab to your computer and use it in GitHub Desktop.
Save michaeljklein/b66e4cf1a129dd03b3f92e183c3616ab to your computer and use it in GitHub Desktop.
parameter (or (or (or (pair %transfer (address :from)
(pair (address :to)
(nat :value)))
(or (pair %transferViaProxy (address :sender)
(pair (address :from)
(pair (address :to)
(nat :value))))
(pair %approve (address :spender)
(nat :value))))
(or (pair %approveViaProxy (address :sender)
(pair (address :spender)
(nat :value)))
(or (pair %getAllowance (pair (address :owner)
(address :spender))
(contract nat))
(pair %getBalance (address :owner)
(contract nat)))))
(or (or (pair %getTotalSupply unit
(contract nat))
(or (bool %setPause)
(address %setAdministrator)))
(or (or (pair %getAdministrator unit
(contract address))
(pair %mint (address :to)
(nat :value)))
(or (pair %burn (address :from)
(nat :value))
(address %setProxy)))));
storage (pair (big_map address (pair nat (map address nat)))
(pair (pair (address %admin_address)
(bool %is_paused))
(pair (nat %counter)
(or (address %proxy_admin)
(address %proxy_contract)))));
code { DUP;
CAR;
DIP { CDR };
IF_LEFT { IF_LEFT { IF_LEFT { SENDER;
PAIR;
DIP { DUP;
CDR;
CAR;
CDR;
IF { PUSH (pair string unit) (Pair "OperationsArePaused" Unit);
FAILWITH }
{ } };
DUP;
CDR;
DUP;
CDR;
CAR;
DIP { CAR };
CAST address;
COMPARE;
EQ;
IF { DROP }
{ DUP;
CAR;
DIP { CDR };
DIP { DUP;
CAR };
SWAP;
DIP { DUP };
COMPARE;
EQ;
IF { DROP }
{ DIP { DUP };
SWAP;
DIP { DIP { DUP };
SWAP;
DIP { DUP };
SWAP;
DIP { DIP { DIP { DIP { DUP } };
DIP { CAR };
PAIR;
DUP;
DIP { CDR;
DIP { CAR };
GET;
IF_NONE { EMPTY_MAP address nat }
{ CDR } };
CAR;
GET;
IF_NONE { PUSH nat 0 }
{ } } };
DIP { DUP;
CAR };
SWAP;
DIP { DUP;
DIP { DIP { DUP;
CDR;
CDR;
DIP { DIP { DUP };
SWAP };
SWAP;
SUB;
ISNAT;
IF_NONE { DIP { DUP };
SWAP;
DIP { DUP };
SWAP;
CDR;
CDR;
PAIR;
CAST (pair nat nat);
CAST (pair (nat :required) (nat :present));
PUSH string "NotEnoughAllowance";
PAIR;
FAILWITH }
{ } };
SWAP };
PAIR };
PAIR;
DIP { DROP;
DROP;
DROP };
DIP { DUP;
CAR };
SWAP;
DIP { DUP;
CAR };
SWAP;
GET;
IF_NONE { PUSH nat 0;
DIP { EMPTY_MAP address nat };
PAIR;
EMPTY_MAP address nat }
{ DUP;
CDR };
DIP { DIP { DUP };
SWAP };
SWAP;
CDR;
CDR;
DUP;
INT;
EQ;
IF { DROP;
NONE nat }
{ SOME };
DIP { DIP { DIP { DUP };
SWAP };
SWAP };
SWAP;
CDR;
CAR;
UPDATE;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR;
SOME;
SWAP;
CAR;
DIP { DIP { DUP;
CAR } };
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR } };
DIP { DUP };
SWAP;
CAR;
DIP { DUP };
SWAP;
CDR;
CAR;
GET;
IF_NONE { DUP;
CDR;
CDR;
INT;
EQ;
IF { NONE (pair nat (map address nat)) }
{ DUP;
CDR;
CDR;
DIP { EMPTY_MAP address nat };
PAIR;
SOME } }
{ DIP { DUP };
SWAP;
CDR;
CDR;
DIP { DUP;
CAR };
ADD;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
SOME };
SWAP;
DIP { DIP { DUP;
CAR } };
DUP;
DIP { CDR;
CAR;
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR };
DUP;
DIP { CDR;
CDR;
INT;
DIP { DUP;
CDR;
DUP;
CDR;
CAR };
ADD;
ISNAT;
IF_NONE { PUSH string "Unexpected failure: Negative total supply\nCallStack (from HasCallStack):\n failUnexpected, called at src/Lorentz/Contracts/ManagedLedger/Impl.hs:158:27 in lorentz-contracts-0.2.0.1-COO43PJkSvp3JHU9EP5qMu:Lorentz.Contracts.ManagedLedger.Impl";
FAILWITH }
{ };
DIP { DUP;
DIP { CAR };
CDR };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
SWAP;
PAIR;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR };
DIP { DUP };
SWAP;
CAR;
DIP { DUP };
SWAP;
CAR;
GET;
IF_NONE { CDR;
CDR;
PUSH nat 0;
SWAP;
PAIR;
CAST (pair nat nat);
CAST (pair (nat :required) (nat :present));
PUSH string "NotEnoughBalance";
PAIR;
FAILWITH }
{ };
DUP;
CAR;
DIP { DIP { DUP };
SWAP };
SWAP;
CDR;
CDR;
SWAP;
SUB;
ISNAT;
IF_NONE { CAR;
DIP { DUP };
SWAP;
CDR;
CDR;
PAIR;
CAST (pair nat nat);
CAST (pair (nat :required) (nat :present));
PUSH string "NotEnoughBalance";
PAIR;
FAILWITH }
{ };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
DIP { DUP };
SWAP;
DIP { DUP;
CAR;
INT;
EQ;
IF { DUP;
CDR;
SIZE;
INT;
EQ;
IF { DROP;
NONE (pair nat (map address nat)) }
{ SOME } }
{ SOME };
SWAP;
CAR;
DIP { DIP { DUP;
CAR } };
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR };
DUP;
DIP { CDR;
CDR;
NEG;
DIP { DUP;
CDR;
DUP;
CDR;
CAR };
ADD;
ISNAT;
IF_NONE { PUSH string "Unexpected failure: Negative total supply\nCallStack (from HasCallStack):\n failUnexpected, called at src/Lorentz/Contracts/ManagedLedger/Impl.hs:158:27 in lorentz-contracts-0.2.0.1-COO43PJkSvp3JHU9EP5qMu:Lorentz.Contracts.ManagedLedger.Impl";
FAILWITH }
{ };
DIP { DUP;
DIP { CAR };
CDR };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
SWAP;
PAIR;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR };
DROP };
NIL operation;
PAIR }
{ IF_LEFT { DIP { DUP;
CDR;
CDR;
CDR;
IF_LEFT { PUSH (pair string unit) (Pair "ProxyIsNotSet" Unit);
FAILWITH }
{ SENDER;
COMPARE;
EQ;
IF { }
{ PUSH (pair string unit) (Pair "CallerIsNotProxy" Unit);
FAILWITH } } };
DIP { DUP;
CDR;
CAR;
CDR;
IF { PUSH (pair string unit) (Pair "OperationsArePaused" Unit);
FAILWITH }
{ } };
CAST (pair address (pair address (pair address nat)));
DUP;
CDR;
DUP;
CDR;
CAR;
DIP { CAR };
COMPARE;
EQ;
IF { DROP }
{ DUP;
CAR;
DIP { CDR };
DIP { DUP;
CAR };
SWAP;
DIP { DUP };
COMPARE;
EQ;
IF { DROP }
{ DIP { DUP };
SWAP;
DIP { DIP { DUP };
SWAP;
DIP { DUP };
SWAP;
DIP { DIP { DIP { DIP { DUP } };
DIP { CAR };
PAIR;
DUP;
DIP { CDR;
DIP { CAR };
GET;
IF_NONE { EMPTY_MAP address nat }
{ CDR } };
CAR;
GET;
IF_NONE { PUSH nat 0 }
{ } } };
DIP { DUP;
CAR };
SWAP;
DIP { DUP;
DIP { DIP { DUP;
CDR;
CDR;
DIP { DIP { DUP };
SWAP };
SWAP;
SUB;
ISNAT;
IF_NONE { DIP { DUP };
SWAP;
DIP { DUP };
SWAP;
CDR;
CDR;
PAIR;
CAST (pair nat nat);
CAST (pair (nat :required) (nat :present));
PUSH string "NotEnoughAllowance";
PAIR;
FAILWITH }
{ } };
SWAP };
PAIR };
PAIR;
DIP { DROP;
DROP;
DROP };
DIP { DUP;
CAR };
SWAP;
DIP { DUP;
CAR };
SWAP;
GET;
IF_NONE { PUSH nat 0;
DIP { EMPTY_MAP address nat };
PAIR;
EMPTY_MAP address nat }
{ DUP;
CDR };
DIP { DIP { DUP };
SWAP };
SWAP;
CDR;
CDR;
DUP;
INT;
EQ;
IF { DROP;
NONE nat }
{ SOME };
DIP { DIP { DIP { DUP };
SWAP };
SWAP };
SWAP;
CDR;
CAR;
UPDATE;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR;
SOME;
SWAP;
CAR;
DIP { DIP { DUP;
CAR } };
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR } };
DIP { DUP };
SWAP;
CAR;
DIP { DUP };
SWAP;
CDR;
CAR;
GET;
IF_NONE { DUP;
CDR;
CDR;
INT;
EQ;
IF { NONE (pair nat (map address nat)) }
{ DUP;
CDR;
CDR;
DIP { EMPTY_MAP address nat };
PAIR;
SOME } }
{ DIP { DUP };
SWAP;
CDR;
CDR;
DIP { DUP;
CAR };
ADD;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
SOME };
SWAP;
DIP { DIP { DUP;
CAR } };
DUP;
DIP { CDR;
CAR;
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR };
DUP;
DIP { CDR;
CDR;
INT;
DIP { DUP;
CDR;
DUP;
CDR;
CAR };
ADD;
ISNAT;
IF_NONE { PUSH string "Unexpected failure: Negative total supply\nCallStack (from HasCallStack):\n failUnexpected, called at src/Lorentz/Contracts/ManagedLedger/Impl.hs:158:27 in lorentz-contracts-0.2.0.1-COO43PJkSvp3JHU9EP5qMu:Lorentz.Contracts.ManagedLedger.Impl";
FAILWITH }
{ };
DIP { DUP;
DIP { CAR };
CDR };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
SWAP;
PAIR;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR };
DIP { DUP };
SWAP;
CAR;
DIP { DUP };
SWAP;
CAR;
GET;
IF_NONE { CDR;
CDR;
PUSH nat 0;
SWAP;
PAIR;
CAST (pair nat nat);
CAST (pair (nat :required) (nat :present));
PUSH string "NotEnoughBalance";
PAIR;
FAILWITH }
{ };
DUP;
CAR;
DIP { DIP { DUP };
SWAP };
SWAP;
CDR;
CDR;
SWAP;
SUB;
ISNAT;
IF_NONE { CAR;
DIP { DUP };
SWAP;
CDR;
CDR;
PAIR;
CAST (pair nat nat);
CAST (pair (nat :required) (nat :present));
PUSH string "NotEnoughBalance";
PAIR;
FAILWITH }
{ };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
DIP { DUP };
SWAP;
DIP { DUP;
CAR;
INT;
EQ;
IF { DUP;
CDR;
SIZE;
INT;
EQ;
IF { DROP;
NONE (pair nat (map address nat)) }
{ SOME } }
{ SOME };
SWAP;
CAR;
DIP { DIP { DUP;
CAR } };
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR };
DUP;
DIP { CDR;
CDR;
NEG;
DIP { DUP;
CDR;
DUP;
CDR;
CAR };
ADD;
ISNAT;
IF_NONE { PUSH string "Unexpected failure: Negative total supply\nCallStack (from HasCallStack):\n failUnexpected, called at src/Lorentz/Contracts/ManagedLedger/Impl.hs:158:27 in lorentz-contracts-0.2.0.1-COO43PJkSvp3JHU9EP5qMu:Lorentz.Contracts.ManagedLedger.Impl";
FAILWITH }
{ };
DIP { DUP;
DIP { CAR };
CDR };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
SWAP;
PAIR;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR };
DROP };
NIL operation;
PAIR }
{ SENDER;
PAIR;
DIP { DUP;
CDR;
CAR;
CDR;
IF { PUSH (pair string unit) (Pair "OperationsArePaused" Unit);
FAILWITH }
{ } };
DIP { DUP };
SWAP;
DIP { DUP };
SWAP;
DUP;
DIP { CAR;
DIP { CAR };
GET;
IF_NONE { EMPTY_MAP address nat }
{ CDR } };
CDR;
CAR;
GET;
IF_NONE { PUSH nat 0 }
{ };
DUP;
INT;
EQ;
IF { DROP }
{ DIP { DUP };
SWAP;
CDR;
CDR;
INT;
EQ;
IF { DROP }
{ CAST nat; CAST (nat :previous); PUSH string "UnsafeAllowanceChange";
PAIR;
FAILWITH } };
DIP { DUP;
CAR };
SWAP;
DIP { DUP;
CAR };
SWAP;
GET;
IF_NONE { PUSH nat 0;
DIP { EMPTY_MAP address nat };
PAIR;
EMPTY_MAP address nat }
{ DUP;
CDR };
DIP { DIP { DUP };
SWAP };
SWAP;
CDR;
CDR;
DUP;
INT;
EQ;
IF { DROP;
NONE nat }
{ SOME };
DIP { DIP { DIP { DUP };
SWAP };
SWAP };
SWAP;
CDR;
CAR;
UPDATE;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR;
SOME;
SWAP;
CAR;
DIP { DIP { DUP;
CAR } };
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
NIL operation;
PAIR } } }
{ IF_LEFT { DIP { DUP;
CDR;
CDR;
CDR;
IF_LEFT { PUSH (pair string unit) (Pair "ProxyIsNotSet" Unit);
FAILWITH }
{ SENDER;
COMPARE;
EQ;
IF { }
{ PUSH (pair string unit) (Pair "CallerIsNotProxy" Unit);
FAILWITH } } };
DIP { DUP;
CDR;
CAR;
CDR;
IF { PUSH (pair string unit) (Pair "OperationsArePaused" Unit);
FAILWITH }
{ } };
DIP { DUP };
SWAP;
DIP { DUP };
SWAP;
DUP;
DIP { CAR;
DIP { CAR };
GET;
IF_NONE { EMPTY_MAP address nat }
{ CDR } };
CDR;
CAR;
GET;
IF_NONE { PUSH nat 0 }
{ };
DUP;
INT;
EQ;
IF { DROP }
{ DIP { DUP };
SWAP;
CDR;
CDR;
INT;
EQ;
IF { DROP }
{ CAST nat; CAST (nat :previous); PUSH string "UnsafeAllowanceChange";
PAIR;
FAILWITH } };
DIP { DUP;
CAR };
SWAP;
DIP { DUP;
CAR };
SWAP;
GET;
IF_NONE { PUSH nat 0;
DIP { EMPTY_MAP address nat };
PAIR;
EMPTY_MAP address nat }
{ DUP;
CDR };
DIP { DIP { DUP };
SWAP };
SWAP;
CDR;
CDR;
DUP;
INT;
EQ;
IF { DROP;
NONE nat }
{ SOME };
DIP { DIP { DIP { DUP };
SWAP };
SWAP };
SWAP;
CDR;
CAR;
UPDATE;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR;
SOME;
SWAP;
CAR;
DIP { DIP { DUP;
CAR } };
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
NIL operation;
PAIR }
{ IF_LEFT { DUP;
CAR;
DIP { CDR };
DIP { DIP { DUP };
SWAP };
PAIR;
DUP;
CAR;
DIP { CDR };
DUP;
DIP { CAR;
DIP { CAR };
GET;
IF_NONE { EMPTY_MAP address nat }
{ CDR } };
CDR;
GET;
IF_NONE { PUSH nat 0 }
{ };
DIP { AMOUNT };
TRANSFER_TOKENS;
NIL operation;
SWAP;
CONS;
PAIR }
{ DUP;
CAR;
DIP { CDR };
DIP { DIP { DUP };
SWAP };
PAIR;
DUP;
CAR;
DIP { CDR };
DIP { CAR };
GET;
IF_NONE { PUSH nat 0 }
{ CAR };
DIP { AMOUNT };
TRANSFER_TOKENS;
NIL operation;
SWAP;
CONS;
PAIR } } } }
{ IF_LEFT { IF_LEFT { DUP;
CAR;
DIP { CDR };
DIP { DIP { DUP };
SWAP };
PAIR;
CDR;
CDR;
CDR;
CAR;
DIP { AMOUNT };
TRANSFER_TOKENS;
NIL operation;
SWAP;
CONS;
PAIR }
{ IF_LEFT { DIP { DUP;
CDR;
CAR;
CAR;
SENDER;
COMPARE;
EQ;
IF { }
{ PUSH (pair string unit) (Pair "SenderIsNotAdmin" Unit);
FAILWITH } };
DIP { DUP;
CDR };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR;
PAIR;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR;
NIL operation;
PAIR }
{ DIP { DUP;
CDR;
CAR;
CAR;
SENDER;
COMPARE;
EQ;
IF { }
{ PUSH (pair string unit) (Pair "SenderIsNotAdmin" Unit);
FAILWITH } };
DIP { DUP;
CDR };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
PAIR;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR;
NIL operation;
PAIR } } }
{ IF_LEFT { IF_LEFT { DUP;
CAR;
DIP { CDR };
DIP { DIP { DUP };
SWAP };
PAIR;
CDR;
CDR;
CAR;
CAR;
DIP { AMOUNT };
TRANSFER_TOKENS;
NIL operation;
SWAP;
CONS;
PAIR }
{ DIP { DUP;
CDR;
CAR;
CAR;
SENDER;
COMPARE;
EQ;
IF { }
{ PUSH (pair string unit) (Pair "SenderIsNotAdmin" Unit);
FAILWITH } };
DIP { DUP };
SWAP;
CAR;
DIP { DUP };
SWAP;
CAR;
GET;
IF_NONE { DUP;
CDR;
INT;
EQ;
IF { NONE (pair nat (map address nat)) }
{ DUP;
CDR;
DIP { EMPTY_MAP address nat };
PAIR;
SOME } }
{ DIP { DUP };
SWAP;
CDR;
DIP { DUP;
CAR };
ADD;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
SOME };
SWAP;
DIP { DIP { DUP;
CAR } };
DUP;
DIP { CAR;
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR };
DUP;
DIP { CDR;
INT;
DIP { DUP;
CDR;
DUP;
CDR;
CAR };
ADD;
ISNAT;
IF_NONE { PUSH string "Unexpected failure: Negative total supply\nCallStack (from HasCallStack):\n failUnexpected, called at src/Lorentz/Contracts/ManagedLedger/Impl.hs:158:27 in lorentz-contracts-0.2.0.1-COO43PJkSvp3JHU9EP5qMu:Lorentz.Contracts.ManagedLedger.Impl";
FAILWITH }
{ };
DIP { DUP;
DIP { CAR };
CDR };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
SWAP;
PAIR;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR };
DROP;
NIL operation;
PAIR } }
{ IF_LEFT { DIP { DUP;
CDR;
CAR;
CAR;
SENDER;
COMPARE;
EQ;
IF { }
{ PUSH (pair string unit) (Pair "SenderIsNotAdmin" Unit);
FAILWITH } };
DIP { DUP };
SWAP;
CAR;
DIP { DUP };
SWAP;
CAR;
GET;
IF_NONE { CDR;
PUSH nat 0;
SWAP;
PAIR;
CAST (pair nat nat);
CAST (pair (nat :required) (nat :present));
PUSH string "NotEnoughBalance";
PAIR;
FAILWITH }
{ };
DUP;
CAR;
DIP { DIP { DUP };
SWAP };
SWAP;
CDR;
SWAP;
SUB;
ISNAT;
IF_NONE { CAR;
DIP { DUP };
SWAP;
CDR;
PAIR;
CAST (pair nat nat);
CAST (pair (nat :required) (nat :present));
PUSH string "NotEnoughBalance";
PAIR;
FAILWITH }
{ };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
DIP { DUP };
SWAP;
DIP { DUP;
CAR;
INT;
EQ;
IF { DUP;
CDR;
SIZE;
INT;
EQ;
IF { DROP;
NONE (pair nat (map address nat)) }
{ SOME } }
{ SOME };
SWAP;
CAR;
DIP { DIP { DUP;
CAR } };
UPDATE;
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR };
DUP;
DIP { CDR;
NEG;
DIP { DUP;
CDR;
DUP;
CDR;
CAR };
ADD;
ISNAT;
IF_NONE { PUSH string "Unexpected failure: Negative total supply\nCallStack (from HasCallStack):\n failUnexpected, called at src/Lorentz/Contracts/ManagedLedger/Impl.hs:158:27 in lorentz-contracts-0.2.0.1-COO43PJkSvp3JHU9EP5qMu:Lorentz.Contracts.ManagedLedger.Impl";
FAILWITH }
{ };
DIP { DUP;
DIP { CAR };
CDR };
DIP { DUP;
DIP { CDR };
CAR };
DIP { DROP };
PAIR;
SWAP;
PAIR;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR };
DROP;
NIL operation;
PAIR }
{ DIP { DUP;
CDR;
CDR;
CDR;
IF_LEFT { SENDER;
COMPARE;
EQ;
IF { }
{ PUSH (pair string unit) (Pair "NotAllowedToSetProxy" Unit);
FAILWITH } }
{ PUSH (pair string unit) (Pair "ProxyAlreadySet" Unit);
FAILWITH } };
RIGHT address;
DIP { DUP;
CDR };
DIP { DUP;
DIP { CAR };
CDR };
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR;
SWAP;
PAIR;
DIP { DUP;
DIP { CAR };
CDR };
DIP { DROP };
SWAP;
PAIR;
NIL operation;
PAIR } } } } };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment