Skip to content

Instantly share code, notes, and snippets.

@karzak
Created May 12, 2019 16:34
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 karzak/35968002fa0db29589475ade0db2988b to your computer and use it in GitHub Desktop.
Save karzak/35968002fa0db29589475ade0db2988b to your computer and use it in GitHub Desktop.
tz payment channel contract
parameter (pair mutez signature);
storage
(pair :storage
(or :status %status (unit %Open) (unit %Closed))
(pair (key %signingKey) (pair (key %sender2) (key %recipient))));
code { DUP ;
DIP { CDR @storage_slash_1 } ;
CAR @action_slash_2 ;
DUP @action ;
DUP ;
CAR @value ;
DUP @value ;
PACK @bytes ;
DUUUP ;
CDR @signature2 ;
DUUUUUUP @storage ;
CDAR %signingKey ;
CHECK_SIGNATURE ;
NOT ;
IF { PUSH string "Invalid signature" ; FAILWITH } { UNIT } ;
DROP ;
DUUUUP @storage ;
CDDAR %sender2 ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
DUUP @value ;
UNIT ;
TRANSFER_TOKENS @senderTransfer ;
DUUUUUP @storage ;
CDDDR %recipient ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
DUUUP @value ;
BALANCE ;
SUB ;
UNIT ;
TRANSFER_TOKENS @recipientTransfer ;
DUUUUUUP @storage ;
NIL operation ;
DUUUP @recipientTransfer ;
DIIIP { DROP } ;
DIIIIP { DROP ; DROP ; DROP ; DROP } ;
CONS ;
DUUUP ;
DIIIP { DROP } ;
CONS ;
PAIR };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment