Michelson: switch string tez constants to int mutez constants

This commit is contained in:
Benjamin Canou 2018-05-02 18:29:07 +02:00 committed by Grégoire Henry
parent ffec060a6f
commit 702896f420
61 changed files with 163 additions and 163 deletions

View File

@ -1,11 +1,11 @@
# This is a very simple accounts system. # This is a very simple accounts system.
# (Left key) initializes or deposits into an account # (Left key) initializes or deposits into an account
# (Right key (pair tez (signed tez))) withdraws tez amount to a # (Right key (pair mutez (signed mutez))) withdraws mutez amount to a
# IMPLICIT_ACCOUNT created from the key if the balance is available # IMPLICIT_ACCOUNT created from the key if the balance is available
# and the key is correctly signed # and the key is correctly signed
parameter (or key_hash (pair key (pair tez signature))); parameter (or key_hash (pair key (pair mutez signature)));
# Maps the key to the balance they have stored # Maps the key to the balance they have stored
storage (map key_hash tez); storage (map key_hash mutez);
code { DUP; CAR; code { DUP; CAR;
# Deposit into account # Deposit into account
IF_LEFT { DUP; DIIP{ CDR; DUP }; IF_LEFT { DUP; DIIP{ CDR; DUP };
@ -30,8 +30,8 @@ code { DUP; CAR;
IF { FAIL } IF { FAIL }
{ SUB; DIP{ DUP; DIP{ SWAP }}; DUP; { SUB; DIP{ DUP; DIP{ SWAP }}; DUP;
# Delete account if balance is 0 # Delete account if balance is 0
PUSH tez "0.00"; CMPEQ; PUSH mutez 0; CMPEQ;
IF { DROP; NONE tez } IF { DROP; NONE mutez }
# Otherwise update storage with new balance # Otherwise update storage with new balance
{ SOME }; { SOME };
SWAP; CAR; HASH_KEY; UPDATE; SWAP; CAR; HASH_KEY; UPDATE;

View File

@ -1,5 +1,5 @@
parameter unit; parameter unit;
storage tez; # How much you have to send me storage mutez; # How much you have to send me
code {CDR; DUP; # Get the amount required (once for comparison, once to save back in storage) code {CDR; DUP; # Get the amount required (once for comparison, once to save back in storage)
AMOUNT; CMPLT; # Check to make sure no one is wasting my time AMOUNT; CMPLT; # Check to make sure no one is wasting my time
IF {FAIL} # Reject the person IF {FAIL} # Reject the person

View File

@ -1,5 +1,5 @@
parameter key_hash; parameter key_hash;
storage (pair timestamp (pair tez key_hash)); storage (pair timestamp (pair mutez key_hash));
code { DUP; CDAR; DUP; NOW; CMPGT; IF {FAIL} {}; SWAP; # Check if auction has ended code { DUP; CDAR; DUP; NOW; CMPGT; IF {FAIL} {}; SWAP; # Check if auction has ended
DUP; CAR; DIP{CDDR}; AMOUNT; PAIR; SWAP; DIP{SWAP; PAIR}; # Setup replacement storage DUP; CAR; DIP{CDDR}; AMOUNT; PAIR; SWAP; DIP{SWAP; PAIR}; # Setup replacement storage
DUP; CAR; AMOUNT; CMPLE; IF {FAIL} {}; # Check to make sure that the new amount is greater DUP; CAR; AMOUNT; CMPLE; IF {FAIL} {}; # Check to make sure that the new amount is greater

View File

@ -1,6 +1,6 @@
parameter unit; parameter unit;
storage (pair timestamp (pair (contract unit) (contract unit))); storage (pair timestamp (pair (contract unit) (contract unit)));
code { CDR; DUP; CAR; NOW; CMPLT; IF {FAIL} {}; code { CDR; DUP; CAR; NOW; CMPLT; IF {FAIL} {};
DUP; CDAR; PUSH tez "100"; UNIT; TRANSFER_TOKENS; SWAP; DUP; CDAR; PUSH mutez 100000000; UNIT; TRANSFER_TOKENS; SWAP;
DUP; CDDR; PUSH tez "100"; UNIT; TRANSFER_TOKENS; DIP {SWAP} ; DUP; CDDR; PUSH mutez 100000000; UNIT; TRANSFER_TOKENS; DIP {SWAP} ;
NIL operation ; SWAP ; CONS ; SWAP ; CONS ; PAIR } NIL operation ; SWAP ; CONS ; SWAP ; CONS ; PAIR }

View File

@ -1,3 +1,3 @@
parameter unit; parameter unit;
storage tez; storage mutez;
code {DROP; BALANCE; NIL operation; PAIR}; code {DROP; BALANCE; NIL operation; PAIR};

View File

@ -1,4 +1,4 @@
parameter (pair tez tez); parameter (pair mutez mutez);
storage (list bool); storage (list bool);
code {CAR; DUP; DUP; DUP; DUP; DIIIIIP {NIL bool}; code {CAR; DUP; DUP; DUP; DUP; DIIIIIP {NIL bool};
DIIIIP {DUP; CAR; DIP {CDR}; COMPARE; LE; CONS}; DIIIIP {DUP; CAR; DIP {CDR}; COMPARE; LE; CONS};

View File

@ -11,6 +11,6 @@ code { UNPAIR ;
IF_NONE IF_NONE
{ NIL operation ; PAIR } { NIL operation ; PAIR }
{ DUP ; DIP { PUSH nat 1 ; ADD ; MUL @storage } ; SWAP; { DUP ; DIP { PUSH nat 1 ; ADD ; MUL @storage } ; SWAP;
DIP { DIP { SELF; PUSH tez "0" } ; DIP { DIP { SELF; PUSH mutez 0 } ;
TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } ;
SWAP ; PAIR } } } SWAP ; PAIR } } }

View File

@ -2,9 +2,9 @@ parameter (or key_hash address) ;
storage (option (contract unit)) ; storage (option (contract unit)) ;
code { CAR; code { CAR;
IF_LEFT IF_LEFT
{ DIP { PUSH tez "100.00" ; PUSH bool False ; NONE key_hash }; { DIP { PUSH mutez 100000000 ; PUSH bool False ; NONE key_hash };
CREATE_ACCOUNT ; CREATE_ACCOUNT ;
DIP { RIGHT key_hash ; DIP { SELF ; PUSH tez "0" } ; TRANSFER_TOKENS ; DIP { RIGHT key_hash ; DIP { SELF ; PUSH mutez 0 } ; TRANSFER_TOKENS ;
NIL operation ; SWAP ; CONS } ; NIL operation ; SWAP ; CONS } ;
CONS ; NONE (contract unit) ; SWAP ; PAIR } CONS ; NONE (contract unit) ; SWAP ; PAIR }
{ SELF ; ADDRESS ; SOURCE ; IFCMPNEQ { FAIL } {} ; { SELF ; ADDRESS ; SOURCE ; IFCMPNEQ { FAIL } {} ;

View File

@ -3,16 +3,16 @@ storage unit;
code { CAR; code { CAR;
IF_LEFT IF_LEFT
{ DIP { PUSH string "dummy"; { DIP { PUSH string "dummy";
PUSH tez "100.00" ; PUSH bool False ; PUSH mutez 100000000 ; PUSH bool False ;
PUSH bool False ; NONE key_hash } ; PUSH bool False ; NONE key_hash } ;
CREATE_CONTRACT CREATE_CONTRACT
{ parameter string ; { parameter string ;
storage string ; storage string ;
code { CAR ; NIL operation ; PAIR } } ; code { CAR ; NIL operation ; PAIR } } ;
DIP { RIGHT key_hash ; DIP { SELF ; PUSH tez "0" } ; TRANSFER_TOKENS ; DIP { RIGHT key_hash ; DIP { SELF ; PUSH mutez 0 } ; TRANSFER_TOKENS ;
NIL operation ; SWAP ; CONS } ; NIL operation ; SWAP ; CONS } ;
CONS ; UNIT ; SWAP ; PAIR } CONS ; UNIT ; SWAP ; PAIR }
{ SELF ; ADDRESS ; SOURCE ; IFCMPNEQ { FAIL } {} ; { SELF ; ADDRESS ; SOURCE ; IFCMPNEQ { FAIL } {} ;
CONTRACT string ; IF_SOME {} { FAIL } ; CONTRACT string ; IF_SOME {} { FAIL } ;
PUSH tez "0.00" ; PUSH string "abcdefg" ; TRANSFER_TOKENS ; PUSH mutez 0 ; PUSH string "abcdefg" ; TRANSFER_TOKENS ;
NIL operation; SWAP; CONS ; UNIT ; SWAP ; PAIR } }; NIL operation; SWAP; CONS ; UNIT ; SWAP ; PAIR } };

View File

@ -1,5 +1,5 @@
parameter key_hash; parameter key_hash;
storage unit; storage unit;
code {DIP{UNIT}; CAR; IMPLICIT_ACCOUNT; code {DIP{UNIT}; CAR; IMPLICIT_ACCOUNT;
PUSH tez "100.00"; UNIT; TRANSFER_TOKENS; PUSH mutez 100000000; UNIT; TRANSFER_TOKENS;
NIL operation; SWAP; CONS; PAIR} NIL operation; SWAP; CONS; PAIR}

View File

@ -2,5 +2,5 @@
parameter unit; parameter unit;
storage unit; storage unit;
code { DROP; code { DROP;
AMOUNT; PUSH tez "10"; CMPGT; IF {FAIL} {}; AMOUNT; PUSH mutez 10000000; CMPGT; IF {FAIL} {};
UNIT; NIL operation; PAIR} UNIT; NIL operation; PAIR}

View File

@ -2,11 +2,11 @@ parameter
(or string nat) ; (or string nat) ;
storage storage
(pair (pair
(pair nat (pair tez tez)) # counter from_buyer from_seller (pair nat (pair mutez mutez)) # counter from_buyer from_seller
(pair (pair
(pair nat (pair timestamp timestamp)) # Q T Z (pair nat (pair timestamp timestamp)) # Q T Z
(pair (pair
(pair tez tez) # K C (pair mutez mutez) # K C
(pair (pair
(pair (contract unit) (contract unit)) # B S (pair (contract unit) (contract unit)) # B S
(contract unit))))) ; # W (contract unit))))) ; # W
@ -40,12 +40,12 @@ code
{ FAIL } } # (Right _) { FAIL } } # (Right _)
{ # After Z + 24 { # After Z + 24
# if balance is emptied, just fail # if balance is emptied, just fail
BALANCE ; PUSH tez "0" ; IFCMPEQ { FAIL } {} ; BALANCE ; PUSH mutez 0 ; IFCMPEQ { FAIL } {} ;
# test if the required amount is reached # test if the required amount is reached
DUP ; CDDAAR ; # Q DUP ; CDDAAR ; # Q
DIP { DUP ; CDDDADR } ; MUL ; # C DIP { DUP ; CDDDADR } ; MUL ; # C
PUSH nat 2 ; MUL ; PUSH nat 2 ; MUL ;
PUSH tez "1.00" ; ADD ; PUSH mutez 1000000 ; ADD ;
BALANCE ; COMPARE ; LT ; # balance < 2 * (Q * C) + 1 BALANCE ; COMPARE ; LT ; # balance < 2 * (Q * C) + 1
IF { # refund the parties IF { # refund the parties
CDR ; DUP ; CADAR ; # amount versed by the buyer CDR ; DUP ; CADAR ; # amount versed by the buyer

View File

@ -1,3 +1,3 @@
parameter (pair tez (pair timestamp int)) ; parameter (pair mutez (pair timestamp int)) ;
storage string ; storage string ;
code { CAR ; H ; NIL operation ; PAIR } code { CAR ; H ; NIL operation ; PAIR }

View File

@ -2,7 +2,7 @@
parameter (option (pair signature int)); parameter (option (pair signature int));
storage (pair key int); storage (pair key int);
code {DUP; DUP; CAR; code {DUP; DUP; CAR;
IF_NONE {PUSH tez "1.00"; # Fee pattern from July 26 IF_NONE {PUSH mutez 1000000; # Fee pattern from July 26
AMOUNT; CMPLE; IF {FAIL} {}; AMOUNT; CMPLE; IF {FAIL} {};
# Provide the data # Provide the data
CDR; DIP {CDDR}} CDR; DIP {CDDR}}

View File

@ -1,9 +1,9 @@
parameter key_hash; parameter key_hash;
storage (pair timestamp (pair tez key_hash)); storage (pair timestamp (pair mutez key_hash));
code { DUP; CDAR; code { DUP; CDAR;
# If the time is more than 2 weeks, any amount makes you king # If the time is more than 2 weeks, any amount makes you king
NOW; CMPGT; NOW; CMPGT;
# User becomes king of tez # User becomes king of mutez
IF { CAR; AMOUNT; PAIR; NOW; PUSH int 604800; ADD; PAIR; IF { CAR; AMOUNT; PAIR; NOW; PUSH int 604800; ADD; PAIR;
NIL operation } NIL operation }
# Check balance to see if user has paid enough to become the new king # Check balance to see if user has paid enough to become the new king

View File

@ -2,7 +2,7 @@ parameter unit;
storage (list (contract unit)); storage (list (contract unit));
code { CDR; DUP; code { CDR; DUP;
DIP {NIL operation}; PUSH bool True; # Setup loop DIP {NIL operation}; PUSH bool True; # Setup loop
LOOP {IF_CONS { PUSH tez "1.00"; UNIT; TRANSFER_TOKENS; # Make transfer LOOP {IF_CONS { PUSH mutez 1000000; UNIT; TRANSFER_TOKENS; # Make transfer
SWAP; DIP {CONS}; PUSH bool True} # Setup for next round of loop SWAP; DIP {CONS}; PUSH bool True} # Setup for next round of loop
{ NIL (contract unit); PUSH bool False}}; # Data to satisfy types and end loop { NIL (contract unit); PUSH bool False}}; # Data to satisfy types and end loop
DROP; PAIR}; # Calling convention DROP; PAIR}; # Calling convention

View File

@ -1,5 +1,5 @@
parameter unit; parameter unit;
storage (pair timestamp (pair tez (contract unit))); storage (pair timestamp (pair mutez (contract unit)));
code { CDR; # Ignore the parameter code { CDR; # Ignore the parameter
DUP; # Duplicate the storage DUP; # Duplicate the storage
CAR; # Get the timestamp CAR; # Get the timestamp

View File

@ -1,4 +1,4 @@
parameter unit; parameter unit;
storage (pair (pair nat (pair nat (pair (pair (pair nat tez) nat) nat))) nat); storage (pair (pair nat (pair nat (pair (pair (pair nat mutez) nat) nat))) nat);
code { MAP_CDADDAADR { PUSH tez "1.00" ; ADD } ; code { MAP_CDADDAADR { PUSH mutez 1000000 ; ADD } ;
NIL operation ; SWAP; SET_CAR }; NIL operation ; SWAP; SET_CAR };

View File

@ -4,7 +4,7 @@ code
{ DUP ; CAR ; PUSH nat 0 ; CMPNEQ ; { DUP ; CAR ; PUSH nat 0 ; CMPNEQ ;
DIP { DUP ; CAR ; DIP { CDR ; NIL operation } } ; DIP { DUP ; CAR ; DIP { CDR ; NIL operation } } ;
LOOP LOOP
{ PUSH tez "5.00" ; { PUSH mutez 5000000 ;
PUSH bool True ; # delegatable PUSH bool True ; # delegatable
NONE key_hash ; # delegate NONE key_hash ; # delegate
PUSH key_hash "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ; # manager PUSH key_hash "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ; # manager

View File

@ -1,7 +1,7 @@
parameter unit; parameter unit;
storage (pair (contract unit) (contract unit)); storage (pair (contract unit) (contract unit));
code { CDR; DUP; CAR; PUSH tez "5.00"; UNIT; code { CDR; DUP; CAR; PUSH mutez 5000000; UNIT;
TRANSFER_TOKENS; TRANSFER_TOKENS;
DIP {DUP; CDR; DIP {DUP; CDR;
PUSH tez "5.00"; UNIT; TRANSFER_TOKENS}; PUSH mutez 5000000; UNIT; TRANSFER_TOKENS};
DIIP{NIL operation};DIP{CONS};CONS;PAIR}; DIIP{NIL operation};DIP{CONS};CONS;PAIR};

View File

@ -1,7 +1,7 @@
parameter unit ; parameter unit ;
storage storage
(pair (pair
(pair (timestamp @T) (tez @N)) (pair (timestamp @T) (mutez @N))
(pair (contract @A unit) (contract @B unit))) ; (pair (contract @A unit) (contract @B unit))) ;
code code
{ CDR ; DUP ; CAAR ; # T { CDR ; DUP ; CAAR ; # T

View File

@ -5,7 +5,7 @@ storage
(pair (pair
timestamp # T timestamp # T
(pair (pair
(pair tez tez) # P N (pair mutez mutez) # P N
(pair (pair
(contract unit) # X (contract unit) # X
(pair (contract unit) (contract unit)))))) ; # A B (pair (contract unit) (contract unit)))))) ; # A B
@ -18,8 +18,8 @@ code
NOW ; NOW ;
COMPARE ; LT ; COMPARE ; LT ;
IF { # Before timeout IF { # Before timeout
# We compute ((1 + P) + N) tez for keeping the contract alive # We compute ((1 + P) + N) mutez for keeping the contract alive
PUSH tez "1.00" ; PUSH mutez 1000000 ;
DIP { DUP ; CDDDAAR } ; ADD ; # P DIP { DUP ; CDDDAAR } ; ADD ; # P
DIP { DUP ; CDDDADR } ; ADD ; # N DIP { DUP ; CDDDADR } ; ADD ; # N
# We compare to the cumulated amount # We compare to the cumulated amount
@ -45,17 +45,17 @@ code
# We update the global # We update the global
CDDR ; PUSH string "timeout" ; PAIR ; CDDR ; PUSH string "timeout" ; PAIR ;
# We try to transfer the fee to the broker # We try to transfer the fee to the broker
PUSH tez "1.00" ; BALANCE ; SUB ; # available PUSH mutez 1000000 ; BALANCE ; SUB ; # available
DIP { DUP ; CDDAAR } ; # P DIP { DUP ; CDDAAR } ; # P
COMPARE ; LT ; # available < P COMPARE ; LT ; # available < P
IF { PUSH tez "1.00" ; BALANCE ; SUB ; # available IF { PUSH mutez 1000000 ; BALANCE ; SUB ; # available
DIP { DUP ; CDDDAR } ; # X DIP { DUP ; CDDDAR } ; # X
UNIT ; TRANSFER_TOKENS } UNIT ; TRANSFER_TOKENS }
{ DUP ; CDDAAR ; # P { DUP ; CDDAAR ; # P
DIP { DUP ; CDDDAR } ; # X DIP { DUP ; CDDDAR } ; # X
UNIT ; TRANSFER_TOKENS } ; UNIT ; TRANSFER_TOKENS } ;
# We transfer the rest to B # We transfer the rest to B
DIP { PUSH tez "1.00" ; BALANCE ; SUB ; # available DIP { PUSH mutez 1000000 ; BALANCE ; SUB ; # available
DIP { DUP ; CDDDDDR } ; # B DIP { DUP ; CDDDDDR } ; # B
UNIT ; TRANSFER_TOKENS } ; UNIT ; TRANSFER_TOKENS } ;
NIL operation ; SWAP ; CONS ; SWAP ; CONS ; NIL operation ; SWAP ; CONS ; SWAP ; CONS ;

View File

@ -1,5 +1,5 @@
parameter tez; parameter mutez;
storage (pair (pair nat (pair nat (pair (pair (pair nat tez) nat) nat))) nat); storage (pair (pair nat (pair nat (pair (pair (pair nat mutez) nat) nat))) nat);
code { DUP ; CAR ; SWAP ; CDR ; code { DUP ; CAR ; SWAP ; CDR ;
SET_CADDAADR @annot ; SET_CADDAADR @annot ;
NIL operation ; PAIR }; NIL operation ; PAIR };

View File

@ -8,7 +8,7 @@ code { DUP;
IF { PUSH bool False} # End the loop IF { PUSH bool False} # End the loop
{ PUSH nat 1; SWAP; SUB; ABS; # Subtract 1. The ABS is to make it back into a nat { PUSH nat 1; SWAP; SUB; ABS; # Subtract 1. The ABS is to make it back into a nat
PUSH string "init"; # Storage type PUSH string "init"; # Storage type
PUSH tez "5.00"; # Strating balance PUSH mutez 5000000; # Strating balance
PUSH bool False; DUP; # Not spendable or delegatable PUSH bool False; DUP; # Not spendable or delegatable
NONE key_hash; NONE key_hash;
PUSH key_hash "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5"; PUSH key_hash "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5";

View File

@ -2,7 +2,7 @@ parameter key_hash;
storage unit; storage unit;
code { CAR; IMPLICIT_ACCOUNT; # Create an account for the recipient of the funds code { CAR; IMPLICIT_ACCOUNT; # Create an account for the recipient of the funds
DIP{UNIT}; # Push a value of the storage type below the contract DIP{UNIT}; # Push a value of the storage type below the contract
PUSH tez "1.00"; # The person can have a ꜩ PUSH mutez 1000000; # The person can have a ꜩ
UNIT; # Push the contract's argument type UNIT; # Push the contract's argument type
TRANSFER_TOKENS; # Run the transfer TRANSFER_TOKENS; # Run the transfer
NIL operation; SWAP; CONS; NIL operation; SWAP; CONS;

View File

@ -1,5 +1,5 @@
parameter (pair tez tez); parameter (pair mutez mutez);
storage (option (pair tez tez)); storage (option (pair mutez mutez));
code {CAR; DUP; DUP; CAR; DIP{CDR}; ADD; code {CAR; DUP; DUP; CAR; DIP{CDR}; ADD;
DIP{DUP; CAR; DIP{CDR}; SUB}; DIP{DUP; CAR; DIP{CDR}; SUB};
PAIR; SOME; NIL operation; PAIR}; PAIR; SOME; NIL operation; PAIR};

View File

@ -1,3 +1,3 @@
parameter unit; parameter unit;
storage tez; storage mutez;
code { DROP; AMOUNT; NIL operation; PAIR }; code { DROP; AMOUNT; NIL operation; PAIR };

View File

@ -1,5 +1,5 @@
parameter (contract unit); parameter (contract unit);
storage unit; storage unit;
code { CAR; DIP{UNIT}; PUSH tez "100.00"; UNIT; code { CAR; DIP{UNIT}; PUSH mutez 100000000; UNIT;
TRANSFER_TOKENS; TRANSFER_TOKENS;
NIL operation; SWAP; CONS; PAIR}; NIL operation; SWAP; CONS; PAIR};

View File

@ -213,16 +213,16 @@ assert_storage $contract_dir/exec_concat.tz '"?"' '"test"' '"test_abc"'
assert_storage $contract_dir/steps_to_quota.tz 111 Unit 399992 assert_storage $contract_dir/steps_to_quota.tz 111 Unit 399992
# Get the current balance of the contract # Get the current balance of the contract
assert_storage $contract_dir/balance.tz '"111"' Unit '"4,000,000"' assert_storage $contract_dir/balance.tz '111' Unit '4000000000000'
# Test comparisons on tez { EQ ; GT ; LT ; GE ; LE } # Test comparisons on tez { EQ ; GT ; LT ; GE ; LE }
assert_storage $contract_dir/compare.tz '{}' '(Pair "1.00" "2.00")' '{ False ; False ; True ; False ; True }' assert_storage $contract_dir/compare.tz '{}' '(Pair 1000000 2000000)' '{ False ; False ; True ; False ; True }'
assert_storage $contract_dir/compare.tz '{}' '(Pair "2.00" "1.00")' '{ False ; True ; False ; True ; False }' assert_storage $contract_dir/compare.tz '{}' '(Pair 2000000 1000000)' '{ False ; True ; False ; True ; False }'
assert_storage $contract_dir/compare.tz '{}' '(Pair "2.37" "2.37")' '{ True ; False ; False ; True ; True }' assert_storage $contract_dir/compare.tz '{}' '(Pair 2370000 2370000)' '{ True ; False ; False ; True ; True }'
# Test addition and subtraction on tez # Test addition and subtraction on tez
assert_storage $contract_dir/tez_add_sub.tz None '(Pair "2" "1")' '(Some (Pair "3" "1"))' assert_storage $contract_dir/tez_add_sub.tz None '(Pair 2000000 1000000)' '(Some (Pair 3000000 1000000))'
assert_storage $contract_dir/tez_add_sub.tz None '(Pair "2.31" "1.01")' '(Some (Pair "3.32" "1.3"))' assert_storage $contract_dir/tez_add_sub.tz None '(Pair 2310000 1010000)' '(Some (Pair 3320000 1300000))'
# Test get first element of list # Test get first element of list
assert_storage $contract_dir/first.tz '111' '{ 1 ; 2 ; 3 ; 4 }' '1' assert_storage $contract_dir/first.tz '111' '{ 1 ; 2 ; 3 ; 4 }' '1'
@ -303,14 +303,14 @@ assert_storage $contract_dir/set_cdr.tz '(Pair "hello" 500)' '3' '(Pair "hello"
assert_storage $contract_dir/set_cdr.tz '(Pair "hello" 7)' '100' '(Pair "hello" 100)' assert_storage $contract_dir/set_cdr.tz '(Pair "hello" 7)' '100' '(Pair "hello" 100)'
assert_storage $contract_dir/set_caddaadr.tz \ assert_storage $contract_dir/set_caddaadr.tz \
'(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 "0") 4) 5))) 6)' \ '(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 0) 4) 5))) 6)' \
'"3"' \ '3000000' \
'(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 "3") 4) 5))) 6)' '(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 3000000) 4) 5))) 6)'
assert_storage $contract_dir/map_caddaadr.tz \ assert_storage $contract_dir/map_caddaadr.tz \
'(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 "0") 4) 5))) 6)' \ '(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 0) 4) 5))) 6)' \
'Unit' \ 'Unit' \
'(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 "1") 4) 5))) 6)' '(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 1000000) 4) 5))) 6)'
# Did the given key sign the string? (key is bootstrap1) # Did the given key sign the string? (key is bootstrap1)
assert_success $client run program $contract_dir/check_signature.tz \ assert_success $client run program $contract_dir/check_signature.tz \
@ -343,7 +343,7 @@ assert_storage_contains store_input '"abcdefg"'
bake_after $client transfer 100 from bootstrap1 to store_input -arg '"xyz"' bake_after $client transfer 100 from bootstrap1 to store_input -arg '"xyz"'
assert_storage_contains store_input '"xyz"' assert_storage_contains store_input '"xyz"'
init_with_transfer $contract_dir/transfer_amount.tz $key1 '"0"' "100" bootstrap1 init_with_transfer $contract_dir/transfer_amount.tz $key1 '0' "100" bootstrap1
bake_after $client transfer 500 from bootstrap1 to transfer_amount -arg Unit bake_after $client transfer 500 from bootstrap1 to transfer_amount -arg Unit
assert_storage_contains transfer_amount 500 assert_storage_contains transfer_amount 500
@ -443,14 +443,14 @@ assert_fails $client typecheck data '{ "A" ; "C" ; "B" }' against type '(set str
assert_fails $client typecheck data '{ "A" ; "B" ; "B" }' against type '(set string)' assert_fails $client typecheck data '{ "A" ; "B" ; "B" }' against type '(set string)'
# Test hash consistency between Michelson and the CLI # Test hash consistency between Michelson and the CLI
hash_result=`$client hash data '(Pair "22220.00" (Pair "2017-12-13T04:49:00Z" 034))' \ hash_result=`$client hash data '(Pair 22220000000 (Pair "2017-12-13T04:49:00Z" 034))' \
of type '(pair tez (pair timestamp int))' | grep expr` of type '(pair mutez (pair timestamp int))' | grep expr`
assert_storage $contract_dir/hash_consistency_checker.tz '"?"' \ assert_storage $contract_dir/hash_consistency_checker.tz '"?"' \
'(Pair "22220.00" (Pair "2017-12-13T04:49:00Z" 034))' "$hash_result" '(Pair 22220000000 (Pair "2017-12-13T04:49:00Z" 034))' "$hash_result"
assert_storage $contract_dir/hash_consistency_checker.tz '"?"' \ assert_storage $contract_dir/hash_consistency_checker.tz '"?"' \
'(Pair "22,220" (Pair "2017-12-13T04:49:00+00:00" 34))' "$hash_result" '(Pair 22220000000 (Pair "2017-12-13T04:49:00+00:00" 34))' "$hash_result"
# Test for big maps # Test for big maps
init_with_transfer $contract_dir/big_map_mem.tz $key1\ init_with_transfer $contract_dir/big_map_mem.tz $key1\

View File

@ -261,7 +261,7 @@ module Script : sig
| T_set | T_set
| T_signature | T_signature
| T_string | T_string
| T_tez | T_mutez
| T_timestamp | T_timestamp
| T_unit | T_unit
| T_operation | T_operation

View File

@ -113,7 +113,7 @@ type prim =
| T_set | T_set
| T_signature | T_signature
| T_string | T_string
| T_tez | T_mutez
| T_timestamp | T_timestamp
| T_unit | T_unit
| T_operation | T_operation
@ -238,7 +238,7 @@ let string_of_prim = function
| T_set -> "set" | T_set -> "set"
| T_signature -> "signature" | T_signature -> "signature"
| T_string -> "string" | T_string -> "string"
| T_tez -> "tez" | T_mutez -> "mutez"
| T_timestamp -> "timestamp" | T_timestamp -> "timestamp"
| T_unit -> "unit" | T_unit -> "unit"
| T_operation -> "operation" | T_operation -> "operation"
@ -344,7 +344,7 @@ let prim_of_string = function
| "set" -> ok T_set | "set" -> ok T_set
| "signature" -> ok T_signature | "signature" -> ok T_signature
| "string" -> ok T_string | "string" -> ok T_string
| "tez" -> ok T_tez | "mutez" -> ok T_mutez
| "timestamp" -> ok T_timestamp | "timestamp" -> ok T_timestamp
| "unit" -> ok T_unit | "unit" -> ok T_unit
| "operation" -> ok T_operation | "operation" -> ok T_operation
@ -494,7 +494,7 @@ let prim_encoding =
("set", T_set) ; ("set", T_set) ;
("signature", T_signature) ; ("signature", T_signature) ;
("string", T_string) ; ("string", T_string) ;
("tez", T_tez) ; ("mutez", T_mutez) ;
("timestamp", T_timestamp) ; ("timestamp", T_timestamp) ;
("unit", T_unit) ; ("unit", T_unit) ;
("operation", T_operation) ; ("operation", T_operation) ;

View File

@ -111,7 +111,7 @@ type prim =
| T_set | T_set
| T_signature | T_signature
| T_string | T_string
| T_tez | T_mutez
| T_timestamp | T_timestamp
| T_unit | T_unit
| T_operation | T_operation

View File

@ -517,7 +517,7 @@ let rec interp
consume_gaz_comparison descr Compare.Bool.compare Interp_costs.compare_bool a b rest consume_gaz_comparison descr Compare.Bool.compare Interp_costs.compare_bool a b rest
| Compare String_key, Item (a, Item (b, rest)) -> | Compare String_key, Item (a, Item (b, rest)) ->
consume_gaz_comparison descr Compare.String.compare Interp_costs.compare_string a b rest consume_gaz_comparison descr Compare.String.compare Interp_costs.compare_string a b rest
| Compare Tez_key, Item (a, Item (b, rest)) -> | Compare Mutez_key, Item (a, Item (b, rest)) ->
consume_gaz_comparison descr Tez.compare Interp_costs.compare_tez a b rest consume_gaz_comparison descr Tez.compare Interp_costs.compare_tez a b rest
| Compare Int_key, Item (a, Item (b, rest)) -> | Compare Int_key, Item (a, Item (b, rest)) ->
consume_gaz_comparison descr Script_int.compare Interp_costs.compare_int a b rest consume_gaz_comparison descr Script_int.compare Interp_costs.compare_int a b rest

View File

@ -42,7 +42,7 @@ let comparable_type_size : type t. t comparable_ty -> int = function
| Int_key -> 1 | Int_key -> 1
| Nat_key -> 1 | Nat_key -> 1
| String_key -> 1 | String_key -> 1
| Tez_key -> 1 | Mutez_key -> 1
| Bool_key -> 1 | Bool_key -> 1
| Key_hash_key -> 1 | Key_hash_key -> 1
| Timestamp_key -> 1 | Timestamp_key -> 1
@ -54,7 +54,7 @@ let rec type_size : type t. t ty -> int = function
| Nat_t -> 1 | Nat_t -> 1
| Signature_t -> 1 | Signature_t -> 1
| String_t -> 1 | String_t -> 1
| Tez_t -> 1 | Mutez_t -> 1
| Key_hash_t -> 1 | Key_hash_t -> 1
| Key_t -> 1 | Key_t -> 1
| Timestamp_t -> 1 | Timestamp_t -> 1
@ -322,7 +322,7 @@ let namespace = function
| T_set | T_set
| T_signature | T_signature
| T_string | T_string
| T_tez | T_mutez
| T_timestamp | T_timestamp
| T_unit | T_unit
| T_operation | T_operation
@ -358,7 +358,7 @@ let compare_comparable
= fun kind x y -> match kind with = fun kind x y -> match kind with
| String_key -> Compare.String.compare x y | String_key -> Compare.String.compare x y
| Bool_key -> Compare.Bool.compare x y | Bool_key -> Compare.Bool.compare x y
| Tez_key -> Tez.compare x y | Mutez_key -> Tez.compare x y
| Key_hash_key -> Signature.Public_key_hash.compare x y | Key_hash_key -> Signature.Public_key_hash.compare x y
| Int_key -> | Int_key ->
let res = (Script_int.compare x y) in let res = (Script_int.compare x y) in
@ -495,7 +495,7 @@ let ty_of_comparable_ty
| Int_key -> Int_t | Int_key -> Int_t
| Nat_key -> Nat_t | Nat_key -> Nat_t
| String_key -> String_t | String_key -> String_t
| Tez_key -> Tez_t | Mutez_key -> Mutez_t
| Bool_key -> Bool_t | Bool_key -> Bool_t
| Key_hash_key -> Key_hash_t | Key_hash_key -> Key_hash_t
| Timestamp_key -> Timestamp_t | Timestamp_key -> Timestamp_t
@ -506,7 +506,7 @@ let unparse_comparable_ty
| Int_key -> Prim (-1, T_int, [], None) | Int_key -> Prim (-1, T_int, [], None)
| Nat_key -> Prim (-1, T_nat, [], None) | Nat_key -> Prim (-1, T_nat, [], None)
| String_key -> Prim (-1, T_string, [], None) | String_key -> Prim (-1, T_string, [], None)
| Tez_key -> Prim (-1, T_tez, [], None) | Mutez_key -> Prim (-1, T_mutez, [], None)
| Bool_key -> Prim (-1, T_bool, [], None) | Bool_key -> Prim (-1, T_bool, [], None)
| Key_hash_key -> Prim (-1, T_key_hash, [], None) | Key_hash_key -> Prim (-1, T_key_hash, [], None)
| Timestamp_key -> Prim (-1, T_timestamp, [], None) | Timestamp_key -> Prim (-1, T_timestamp, [], None)
@ -519,7 +519,7 @@ let rec unparse_ty
| Int_t -> Prim (-1, T_int, [], annot) | Int_t -> Prim (-1, T_int, [], annot)
| Nat_t -> Prim (-1, T_nat, [], annot) | Nat_t -> Prim (-1, T_nat, [], annot)
| String_t -> Prim (-1, T_string, [], annot) | String_t -> Prim (-1, T_string, [], annot)
| Tez_t -> Prim (-1, T_tez, [], annot) | Mutez_t -> Prim (-1, T_mutez, [], annot)
| Bool_t -> Prim (-1, T_bool, [], annot) | Bool_t -> Prim (-1, T_bool, [], annot)
| Key_hash_t -> Prim (-1, T_key_hash, [], annot) | Key_hash_t -> Prim (-1, T_key_hash, [], annot)
| Key_t -> Prim (-1, T_key, [], annot) | Key_t -> Prim (-1, T_key, [], annot)
@ -604,9 +604,9 @@ let rec unparse_data
MBytes.to_hex MBytes.to_hex
(Data_encoding.Binary.to_bytes_exn Signature.encoding s) in (Data_encoding.Binary.to_bytes_exn Signature.encoding s) in
(String (-1, text), gas) (String (-1, text), gas)
| Tez_t, v -> | Mutez_t, v ->
Gas.consume ctxt Unparse_costs.tez >|? fun gas -> Gas.consume ctxt Unparse_costs.tez >|? fun gas ->
(String (-1, Tez.to_string v), gas) (Int (-1, Z.of_int64 (Tez.to_mutez v)), gas)
| Key_t, k -> | Key_t, k ->
Gas.consume ctxt Unparse_costs.key >|? fun gas -> Gas.consume ctxt Unparse_costs.key >|? fun gas ->
(String (-1, Signature.Public_key.to_b58check k), gas) (String (-1, Signature.Public_key.to_b58check k), gas)
@ -686,7 +686,7 @@ let comparable_ty_eq
| Int_key, Int_key -> Ok Eq | Int_key, Int_key -> Ok Eq
| Nat_key, Nat_key -> Ok Eq | Nat_key, Nat_key -> Ok Eq
| String_key, String_key -> Ok Eq | String_key, String_key -> Ok Eq
| Tez_key, Tez_key -> Ok Eq | Mutez_key, Mutez_key -> Ok Eq
| Bool_key, Bool_key -> Ok Eq | Bool_key, Bool_key -> Ok Eq
| Key_hash_key, Key_hash_key -> Ok Eq | Key_hash_key, Key_hash_key -> Ok Eq
| Timestamp_key, Timestamp_key -> Ok Eq | Timestamp_key, Timestamp_key -> Ok Eq
@ -704,7 +704,7 @@ let rec ty_eq
| Key_hash_t, Key_hash_t -> Ok Eq | Key_hash_t, Key_hash_t -> Ok Eq
| String_t, String_t -> Ok Eq | String_t, String_t -> Ok Eq
| Signature_t, Signature_t -> Ok Eq | Signature_t, Signature_t -> Ok Eq
| Tez_t, Tez_t -> Ok Eq | Mutez_t, Mutez_t -> Ok Eq
| Timestamp_t, Timestamp_t -> Ok Eq | Timestamp_t, Timestamp_t -> Ok Eq
| Address_t, Address_t -> Ok Eq | Address_t, Address_t -> Ok Eq
| Bool_t, Bool_t -> Ok Eq | Bool_t, Bool_t -> Ok Eq
@ -783,7 +783,7 @@ let merge_comparable_types
| Int_key, Int_key -> ta | Int_key, Int_key -> ta
| Nat_key, Nat_key -> ta | Nat_key, Nat_key -> ta
| String_key, String_key -> ta | String_key, String_key -> ta
| Tez_key, Tez_key -> ta | Mutez_key, Mutez_key -> ta
| Bool_key, Bool_key -> ta | Bool_key, Bool_key -> ta
| Key_hash_key, Key_hash_key -> ta | Key_hash_key, Key_hash_key -> ta
| Timestamp_key, Timestamp_key -> ta | Timestamp_key, Timestamp_key -> ta
@ -816,7 +816,7 @@ let merge_types :
| Key_hash_t, Key_hash_t -> ok Key_hash_t | Key_hash_t, Key_hash_t -> ok Key_hash_t
| String_t, String_t -> ok String_t | String_t, String_t -> ok String_t
| Signature_t, Signature_t -> ok Signature_t | Signature_t, Signature_t -> ok Signature_t
| Tez_t, Tez_t -> ok Tez_t | Mutez_t, Mutez_t -> ok Mutez_t
| Timestamp_t, Timestamp_t -> ok Timestamp_t | Timestamp_t, Timestamp_t -> ok Timestamp_t
| Address_t, Address_t -> ok Address_t | Address_t, Address_t -> ok Address_t
| Bool_t, Bool_t -> ok Bool_t | Bool_t, Bool_t -> ok Bool_t
@ -921,13 +921,13 @@ let rec parse_comparable_ty
| Prim (_, T_int, [], _) -> ok (Ex_comparable_ty Int_key) | Prim (_, T_int, [], _) -> ok (Ex_comparable_ty Int_key)
| Prim (_, T_nat, [], _) -> ok (Ex_comparable_ty Nat_key) | Prim (_, T_nat, [], _) -> ok (Ex_comparable_ty Nat_key)
| Prim (_, T_string, [], _) -> ok (Ex_comparable_ty String_key) | Prim (_, T_string, [], _) -> ok (Ex_comparable_ty String_key)
| Prim (_, T_tez, [], _) -> ok (Ex_comparable_ty Tez_key) | Prim (_, T_mutez, [], _) -> ok (Ex_comparable_ty Mutez_key)
| Prim (_, T_bool, [], _) -> ok (Ex_comparable_ty Bool_key) | Prim (_, T_bool, [], _) -> ok (Ex_comparable_ty Bool_key)
| Prim (_, T_key_hash, [], _) -> ok (Ex_comparable_ty Key_hash_key) | Prim (_, T_key_hash, [], _) -> ok (Ex_comparable_ty Key_hash_key)
| Prim (_, T_timestamp, [], _) -> ok (Ex_comparable_ty Timestamp_key) | Prim (_, T_timestamp, [], _) -> ok (Ex_comparable_ty Timestamp_key)
| Prim (_, T_address, [], _) -> ok (Ex_comparable_ty Address_key) | Prim (_, T_address, [], _) -> ok (Ex_comparable_ty Address_key)
| Prim (loc, (T_int | T_nat | Prim (loc, (T_int | T_nat
| T_string | T_tez | T_bool | T_string | T_mutez | T_bool
| T_key | T_address | T_timestamp as prim), l, _) -> | T_key | T_address | T_timestamp as prim), l, _) ->
error (Invalid_arity (loc, prim, 0, List.length l)) error (Invalid_arity (loc, prim, 0, List.length l))
| Prim (loc, (T_pair | T_or | T_set | T_map | Prim (loc, (T_pair | T_or | T_set | T_map
@ -938,7 +938,7 @@ let rec parse_comparable_ty
| expr -> | expr ->
error @@ unexpected expr [] Type_namespace error @@ unexpected expr [] Type_namespace
[ T_int ; T_nat ; [ T_int ; T_nat ;
T_string ; T_tez ; T_bool ; T_string ; T_mutez ; T_bool ;
T_key ; T_key_hash ; T_timestamp ] T_key ; T_key_hash ; T_timestamp ]
and parse_ty and parse_ty
@ -968,8 +968,8 @@ and parse_ty
ok (Ex_ty Nat_t, annot) ok (Ex_ty Nat_t, annot)
| Prim (_, T_string, [], annot) -> | Prim (_, T_string, [], annot) ->
ok (Ex_ty String_t, annot) ok (Ex_ty String_t, annot)
| Prim (_, T_tez, [], annot) -> | Prim (_, T_mutez, [], annot) ->
ok (Ex_ty Tez_t, annot) ok (Ex_ty Mutez_t, annot)
| Prim (_, T_bool, [], annot) -> | Prim (_, T_bool, [], annot) ->
ok (Ex_ty Bool_t, annot) ok (Ex_ty Bool_t, annot)
| Prim (_, T_key, [], annot) -> | Prim (_, T_key, [], annot) ->
@ -1019,7 +1019,7 @@ and parse_ty
error (Unexpected_big_map loc) error (Unexpected_big_map loc)
| Prim (loc, (T_unit | T_signature | Prim (loc, (T_unit | T_signature
| T_int | T_nat | T_int | T_nat
| T_string | T_tez | T_bool | T_string | T_mutez | T_bool
| T_key | T_key_hash | T_key | T_key_hash
| T_timestamp | T_address as prim), l, _) -> | T_timestamp | T_address as prim), l, _) ->
error (Invalid_arity (loc, prim, 0, List.length l)) error (Invalid_arity (loc, prim, 0, List.length l))
@ -1033,7 +1033,7 @@ and parse_ty
T_list ; T_option ; T_lambda ; T_list ; T_option ; T_lambda ;
T_unit ; T_signature ; T_contract ; T_unit ; T_signature ; T_contract ;
T_int ; T_nat ; T_operation ; T_int ; T_nat ; T_operation ;
T_string ; T_tez ; T_bool ; T_string ; T_mutez ; T_bool ;
T_key ; T_key_hash ; T_timestamp ] T_key ; T_key_hash ; T_timestamp ]
let rec unparse_stack let rec unparse_stack
@ -1128,16 +1128,16 @@ let rec parse_data
| Nat_t, expr -> | Nat_t, expr ->
traced (fail (Invalid_kind (location expr, [ Int_kind ], kind expr))) traced (fail (Invalid_kind (location expr, [ Int_kind ], kind expr)))
(* Tez amounts *) (* Tez amounts *)
| Tez_t, String (_, v) -> | Mutez_t, Int (_, v) ->
Lwt.return (Gas.consume ctxt Typecheck_costs.tez) >>=? fun ctxt -> Lwt.return (Gas.consume ctxt Typecheck_costs.tez) >>=? fun ctxt ->
begin try begin try
match Tez.of_string v with match Tez.of_mutez (Z.to_int64 v) with
| None -> raise Exit | None -> raise Exit
| Some tez -> return (tez, ctxt) | Some tez -> return (tez, ctxt)
with _ -> with _ ->
fail @@ error () fail @@ error ()
end end
| Tez_t, expr -> | Mutez_t, expr ->
traced (fail (Invalid_kind (location expr, [ String_kind ], kind expr))) traced (fail (Invalid_kind (location expr, [ String_kind ], kind expr)))
(* Timestamps *) (* Timestamps *)
| Timestamp_t, (Int (_, v)) -> | Timestamp_t, (Int (_, v)) ->
@ -1790,21 +1790,21 @@ and parse_instr
(Item_t (String_t, rest, instr_annot)) (Item_t (String_t, rest, instr_annot))
(* currency operations *) (* currency operations *)
| Prim (loc, I_ADD, [], instr_annot), | Prim (loc, I_ADD, [], instr_annot),
Item_t (Tez_t, Item_t (Tez_t, rest, _), _) -> Item_t (Mutez_t, Item_t (Mutez_t, rest, _), _) ->
typed ctxt loc Add_tez typed ctxt loc Add_tez
(Item_t (Tez_t, rest, instr_annot)) (Item_t (Mutez_t, rest, instr_annot))
| Prim (loc, I_SUB, [], instr_annot), | Prim (loc, I_SUB, [], instr_annot),
Item_t (Tez_t, Item_t (Tez_t, rest, _), _) -> Item_t (Mutez_t, Item_t (Mutez_t, rest, _), _) ->
typed ctxt loc Sub_tez typed ctxt loc Sub_tez
(Item_t (Tez_t, rest, instr_annot)) (Item_t (Mutez_t, rest, instr_annot))
| Prim (loc, I_MUL, [], instr_annot), | Prim (loc, I_MUL, [], instr_annot),
Item_t (Tez_t, Item_t (Nat_t, rest, _), _) -> Item_t (Mutez_t, Item_t (Nat_t, rest, _), _) ->
typed ctxt loc Mul_teznat typed ctxt loc Mul_teznat
(Item_t (Tez_t, rest, instr_annot)) (Item_t (Mutez_t, rest, instr_annot))
| Prim (loc, I_MUL, [], instr_annot), | Prim (loc, I_MUL, [], instr_annot),
Item_t (Nat_t, Item_t (Tez_t, rest, _), _) -> Item_t (Nat_t, Item_t (Mutez_t, rest, _), _) ->
typed ctxt loc Mul_nattez typed ctxt loc Mul_nattez
(Item_t (Tez_t, rest, instr_annot)) (Item_t (Mutez_t, rest, instr_annot))
(* boolean operations *) (* boolean operations *)
| Prim (loc, I_OR, [], instr_annot), | Prim (loc, I_OR, [], instr_annot),
Item_t (Bool_t, Item_t (Bool_t, rest, _), _) -> Item_t (Bool_t, Item_t (Bool_t, rest, _), _) ->
@ -1896,13 +1896,13 @@ and parse_instr
typed ctxt loc Mul_natnat typed ctxt loc Mul_natnat
(Item_t (Nat_t, rest, instr_annot)) (Item_t (Nat_t, rest, instr_annot))
| Prim (loc, I_EDIV, [], instr_annot), | Prim (loc, I_EDIV, [], instr_annot),
Item_t (Tez_t, Item_t (Nat_t, rest, _), _) -> Item_t (Mutez_t, Item_t (Nat_t, rest, _), _) ->
typed ctxt loc Ediv_teznat typed ctxt loc Ediv_teznat
(Item_t (Option_t (Pair_t ((Tez_t, None), (Tez_t, None))), rest, instr_annot)) (Item_t (Option_t (Pair_t ((Mutez_t, None), (Mutez_t, None))), rest, instr_annot))
| Prim (loc, I_EDIV, [], instr_annot), | Prim (loc, I_EDIV, [], instr_annot),
Item_t (Tez_t, Item_t (Tez_t, rest, _), _) -> Item_t (Mutez_t, Item_t (Mutez_t, rest, _), _) ->
typed ctxt loc Ediv_tez typed ctxt loc Ediv_tez
(Item_t (Option_t (Pair_t ((Nat_t, None), (Tez_t, None))), rest, instr_annot)) (Item_t (Option_t (Pair_t ((Nat_t, None), (Mutez_t, None))), rest, instr_annot))
| Prim (loc, I_EDIV, [], instr_annot), | Prim (loc, I_EDIV, [], instr_annot),
Item_t (Int_t, Item_t (Int_t, rest, _), _) -> Item_t (Int_t, Item_t (Int_t, rest, _), _) ->
typed ctxt loc Ediv_intint typed ctxt loc Ediv_intint
@ -1969,8 +1969,8 @@ and parse_instr
typed ctxt loc (Compare String_key) typed ctxt loc (Compare String_key)
(Item_t (Int_t, rest, instr_annot)) (Item_t (Int_t, rest, instr_annot))
| Prim (loc, I_COMPARE, [], instr_annot), | Prim (loc, I_COMPARE, [], instr_annot),
Item_t (Tez_t, Item_t (Tez_t, rest, _), _) -> Item_t (Mutez_t, Item_t (Mutez_t, rest, _), _) ->
typed ctxt loc (Compare Tez_key) typed ctxt loc (Compare Mutez_key)
(Item_t (Int_t, rest, instr_annot)) (Item_t (Int_t, rest, instr_annot))
| Prim (loc, I_COMPARE, [], instr_annot), | Prim (loc, I_COMPARE, [], instr_annot),
Item_t (Key_hash_t, Item_t (Key_hash_t, rest, _), _) -> Item_t (Key_hash_t, Item_t (Key_hash_t, rest, _), _) ->
@ -2030,7 +2030,7 @@ and parse_instr
(Item_t (Option_t Key_hash_t, rest, instr_annot)) (Item_t (Option_t Key_hash_t, rest, instr_annot))
| Prim (loc, I_TRANSFER_TOKENS, [], instr_annot), | Prim (loc, I_TRANSFER_TOKENS, [], instr_annot),
Item_t (p, Item_t Item_t (p, Item_t
(Tez_t, Item_t (Mutez_t, Item_t
(Contract_t cp, rest, _), _), _) -> (Contract_t cp, rest, _), _), _) ->
check_item_ty p cp loc I_TRANSFER_TOKENS 1 4 >>=? fun Eq -> check_item_ty p cp loc I_TRANSFER_TOKENS 1 4 >>=? fun Eq ->
typed ctxt loc Transfer_tokens (Item_t (Operation_t, rest, instr_annot)) typed ctxt loc Transfer_tokens (Item_t (Operation_t, rest, instr_annot))
@ -2042,7 +2042,7 @@ and parse_instr
(Key_hash_t, Item_t (Key_hash_t, Item_t
(Option_t Key_hash_t, Item_t (Option_t Key_hash_t, Item_t
(Bool_t, Item_t (Bool_t, Item_t
(Tez_t, rest, _), _), _), _) -> (Mutez_t, rest, _), _), _), _) ->
typed ctxt loc Create_account typed ctxt loc Create_account
(Item_t (Operation_t, Item_t (Address_t, rest, None), instr_annot)) (Item_t (Operation_t, Item_t (Address_t, rest, None), instr_annot))
| Prim (loc, I_IMPLICIT_ACCOUNT, [], instr_annot), | Prim (loc, I_IMPLICIT_ACCOUNT, [], instr_annot),
@ -2055,7 +2055,7 @@ and parse_instr
(Option_t Key_hash_t, Item_t (Option_t Key_hash_t, Item_t
(Bool_t, Item_t (Bool_t, Item_t
(Bool_t, Item_t (Bool_t, Item_t
(Tez_t, Item_t (Mutez_t, Item_t
(ginit, rest, _), _), _), _), _), _) -> (ginit, rest, _), _), _), _), _), _) ->
fail_unexpected_annot seq_loc annot >>=? fun () -> fail_unexpected_annot seq_loc annot >>=? fun () ->
let cannonical_code = fst @@ Micheline.extract_locations code in let cannonical_code = fst @@ Micheline.extract_locations code in
@ -2087,11 +2087,11 @@ and parse_instr
| Prim (loc, I_AMOUNT, [], instr_annot), | Prim (loc, I_AMOUNT, [], instr_annot),
stack -> stack ->
typed ctxt loc Amount typed ctxt loc Amount
(Item_t (Tez_t, stack, instr_annot)) (Item_t (Mutez_t, stack, instr_annot))
| Prim (loc, I_BALANCE, [], instr_annot), | Prim (loc, I_BALANCE, [], instr_annot),
stack -> stack ->
typed ctxt loc Balance typed ctxt loc Balance
(Item_t (Tez_t, stack, instr_annot)) (Item_t (Mutez_t, stack, instr_annot))
| Prim (loc, I_HASH_KEY, [], instr_annot), | Prim (loc, I_HASH_KEY, [], instr_annot),
Item_t (Key_t, rest, _) -> Item_t (Key_t, rest, _) ->
typed ctxt loc Hash_key typed ctxt loc Hash_key

View File

@ -17,7 +17,7 @@ type 'ty comparable_ty =
| Int_key : (z num) comparable_ty | Int_key : (z num) comparable_ty
| Nat_key : (n num) comparable_ty | Nat_key : (n num) comparable_ty
| String_key : string comparable_ty | String_key : string comparable_ty
| Tez_key : Tez.t comparable_ty | Mutez_key : Tez.t comparable_ty
| Bool_key : bool comparable_ty | Bool_key : bool comparable_ty
| Key_hash_key : public_key_hash comparable_ty | Key_hash_key : public_key_hash comparable_ty
| Timestamp_key : Script_timestamp.t comparable_ty | Timestamp_key : Script_timestamp.t comparable_ty
@ -68,7 +68,7 @@ and 'ty ty =
| Nat_t : n num ty | Nat_t : n num ty
| Signature_t : signature ty | Signature_t : signature ty
| String_t : string ty | String_t : string ty
| Tez_t : Tez.t ty | Mutez_t : Tez.t ty
| Key_hash_t : public_key_hash ty | Key_hash_t : public_key_hash ty
| Key_t : public_key ty | Key_t : public_key ty
| Timestamp_t : Script_timestamp.t ty | Timestamp_t : Script_timestamp.t ty

View File

@ -1,11 +1,11 @@
# This is a very simple accounts system. # This is a very simple accounts system.
# (Left key) initializes or deposits into an account # (Left key) initializes or deposits into an account
# (Right key (pair tez (signed tez))) withdraws tez amount to a # (Right key (pair mutez (signed mutez))) withdraws mutez amount to a
# IMPLICIT_ACCOUNT created from the key if the balance is available # IMPLICIT_ACCOUNT created from the key if the balance is available
# and the key is correctly signed # and the key is correctly signed
parameter (or key_hash (pair key (pair tez signature))); parameter (or key_hash (pair key (pair mutez signature)));
# Maps the key to the balance they have stored # Maps the key to the balance they have stored
storage (map key_hash tez); storage (map key_hash mutez);
code { DUP; CAR; code { DUP; CAR;
# Deposit into account # Deposit into account
IF_LEFT { DUP; DIIP{ CDR; DUP }; IF_LEFT { DUP; DIIP{ CDR; DUP };
@ -30,8 +30,8 @@ code { DUP; CAR;
IF { FAIL } IF { FAIL }
{ SUB; DIP{ DUP; DIP{ SWAP }}; DUP; { SUB; DIP{ DUP; DIP{ SWAP }}; DUP;
# Delete account if balance is 0 # Delete account if balance is 0
PUSH tez "0.00"; CMPEQ; PUSH mutez 0; CMPEQ;
IF { DROP; NONE tez } IF { DROP; NONE mutez }
# Otherwise update storage with new balance # Otherwise update storage with new balance
{ SOME }; { SOME };
SWAP; CAR; HASH_KEY; UPDATE; SWAP; CAR; HASH_KEY; UPDATE;

View File

@ -1,5 +1,5 @@
parameter unit; parameter unit;
storage tez; # How much you have to send me storage mutez; # How much you have to send me
code {CDR; DUP; # Get the amount required (once for comparison, once to save back in storage) code {CDR; DUP; # Get the amount required (once for comparison, once to save back in storage)
AMOUNT; CMPLT; # Check to make sure no one is wasting my time AMOUNT; CMPLT; # Check to make sure no one is wasting my time
IF {FAIL} # Reject the person IF {FAIL} # Reject the person

View File

@ -1,5 +1,5 @@
parameter key_hash; parameter key_hash;
storage (pair timestamp (pair tez key_hash)); storage (pair timestamp (pair mutez key_hash));
code { DUP; CDAR; DUP; NOW; CMPGT; IF {FAIL} {}; SWAP; # Check if auction has ended code { DUP; CDAR; DUP; NOW; CMPGT; IF {FAIL} {}; SWAP; # Check if auction has ended
DUP; CAR; DIP{CDDR}; AMOUNT; PAIR; SWAP; DIP{SWAP; PAIR}; # Setup replacement storage DUP; CAR; DIP{CDDR}; AMOUNT; PAIR; SWAP; DIP{SWAP; PAIR}; # Setup replacement storage
DUP; CAR; AMOUNT; CMPLE; IF {FAIL} {}; # Check to make sure that the new amount is greater DUP; CAR; AMOUNT; CMPLE; IF {FAIL} {}; # Check to make sure that the new amount is greater

View File

@ -1,6 +1,6 @@
parameter unit; parameter unit;
storage (pair timestamp (pair (contract unit) (contract unit))); storage (pair timestamp (pair (contract unit) (contract unit)));
code { CDR; DUP; CAR; NOW; CMPLT; IF {FAIL} {}; code { CDR; DUP; CAR; NOW; CMPLT; IF {FAIL} {};
DUP; CDAR; PUSH tez "100"; UNIT; TRANSFER_TOKENS; SWAP; DUP; CDAR; PUSH mutez 100000000; UNIT; TRANSFER_TOKENS; SWAP;
DUP; CDDR; PUSH tez "100"; UNIT; TRANSFER_TOKENS; DIP {SWAP} ; DUP; CDDR; PUSH mutez 100000000; UNIT; TRANSFER_TOKENS; DIP {SWAP} ;
NIL operation ; SWAP ; CONS ; SWAP ; CONS ; PAIR } NIL operation ; SWAP ; CONS ; SWAP ; CONS ; PAIR }

View File

@ -1,3 +1,3 @@
parameter unit; parameter unit;
storage tez; storage mutez;
code {DROP; BALANCE; NIL operation; PAIR}; code {DROP; BALANCE; NIL operation; PAIR};

View File

@ -1,4 +1,4 @@
parameter (pair tez tez); parameter (pair mutez mutez);
storage (list bool); storage (list bool);
code {CAR; DUP; DUP; DUP; DUP; DIIIIIP {NIL bool}; code {CAR; DUP; DUP; DUP; DUP; DIIIIIP {NIL bool};
DIIIIP {DUP; CAR; DIP {CDR}; COMPARE; LE; CONS}; DIIIIP {DUP; CAR; DIP {CDR}; COMPARE; LE; CONS};

View File

@ -11,6 +11,6 @@ code { UNPAIR ;
IF_NONE IF_NONE
{ NIL operation ; PAIR } { NIL operation ; PAIR }
{ DUP ; DIP { PUSH nat 1 ; ADD ; MUL @storage } ; SWAP; { DUP ; DIP { PUSH nat 1 ; ADD ; MUL @storage } ; SWAP;
DIP { DIP { SELF; PUSH tez "0" } ; DIP { DIP { SELF; PUSH mutez 0 } ;
TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } ;
SWAP ; PAIR } } } SWAP ; PAIR } } }

View File

@ -2,9 +2,9 @@ parameter (or key_hash address) ;
storage (option (contract unit)) ; storage (option (contract unit)) ;
code { CAR; code { CAR;
IF_LEFT IF_LEFT
{ DIP { PUSH tez "100.00" ; PUSH bool False ; NONE key_hash }; { DIP { PUSH mutez 100000000 ; PUSH bool False ; NONE key_hash };
CREATE_ACCOUNT ; CREATE_ACCOUNT ;
DIP { RIGHT key_hash ; DIP { SELF ; PUSH tez "0" } ; TRANSFER_TOKENS ; DIP { RIGHT key_hash ; DIP { SELF ; PUSH mutez 0 } ; TRANSFER_TOKENS ;
NIL operation ; SWAP ; CONS } ; NIL operation ; SWAP ; CONS } ;
CONS ; NONE (contract unit) ; SWAP ; PAIR } CONS ; NONE (contract unit) ; SWAP ; PAIR }
{ SELF ; ADDRESS ; SOURCE ; IFCMPNEQ { FAIL } {} ; { SELF ; ADDRESS ; SOURCE ; IFCMPNEQ { FAIL } {} ;

View File

@ -3,16 +3,16 @@ storage unit;
code { CAR; code { CAR;
IF_LEFT IF_LEFT
{ DIP { PUSH string "dummy"; { DIP { PUSH string "dummy";
PUSH tez "100.00" ; PUSH bool False ; PUSH mutez 100000000 ; PUSH bool False ;
PUSH bool False ; NONE key_hash } ; PUSH bool False ; NONE key_hash } ;
CREATE_CONTRACT CREATE_CONTRACT
{ parameter string ; { parameter string ;
storage string ; storage string ;
code { CAR ; NIL operation ; PAIR } } ; code { CAR ; NIL operation ; PAIR } } ;
DIP { RIGHT key_hash ; DIP { SELF ; PUSH tez "0" } ; TRANSFER_TOKENS ; DIP { RIGHT key_hash ; DIP { SELF ; PUSH mutez 0 } ; TRANSFER_TOKENS ;
NIL operation ; SWAP ; CONS } ; NIL operation ; SWAP ; CONS } ;
CONS ; UNIT ; SWAP ; PAIR } CONS ; UNIT ; SWAP ; PAIR }
{ SELF ; ADDRESS ; SOURCE ; IFCMPNEQ { FAIL } {} ; { SELF ; ADDRESS ; SOURCE ; IFCMPNEQ { FAIL } {} ;
CONTRACT string ; IF_SOME {} { FAIL } ; CONTRACT string ; IF_SOME {} { FAIL } ;
PUSH tez "0.00" ; PUSH string "abcdefg" ; TRANSFER_TOKENS ; PUSH mutez 0 ; PUSH string "abcdefg" ; TRANSFER_TOKENS ;
NIL operation; SWAP; CONS ; UNIT ; SWAP ; PAIR } }; NIL operation; SWAP; CONS ; UNIT ; SWAP ; PAIR } };

View File

@ -1,5 +1,5 @@
parameter key_hash; parameter key_hash;
storage unit; storage unit;
code {DIP{UNIT}; CAR; IMPLICIT_ACCOUNT; code {DIP{UNIT}; CAR; IMPLICIT_ACCOUNT;
PUSH tez "100.00"; UNIT; TRANSFER_TOKENS; PUSH mutez 100000000; UNIT; TRANSFER_TOKENS;
NIL operation; SWAP; CONS; PAIR} NIL operation; SWAP; CONS; PAIR}

View File

@ -2,5 +2,5 @@
parameter unit; parameter unit;
storage unit; storage unit;
code { DROP; code { DROP;
AMOUNT; PUSH tez "10"; CMPGT; IF {FAIL} {}; AMOUNT; PUSH mutez 10000000; CMPGT; IF {FAIL} {};
UNIT; NIL operation; PAIR} UNIT; NIL operation; PAIR}

View File

@ -1,3 +1,3 @@
parameter (pair tez (pair timestamp int)) ; parameter (pair mutez (pair timestamp int)) ;
storage string ; storage string ;
code { CAR ; H ; NIL operation ; PAIR } code { CAR ; H ; NIL operation ; PAIR }

View File

@ -2,7 +2,7 @@
parameter (option (pair signature int)); parameter (option (pair signature int));
storage (pair key int); storage (pair key int);
code {DUP; DUP; CAR; code {DUP; DUP; CAR;
IF_NONE {PUSH tez "1.00"; # Fee pattern from July 26 IF_NONE {PUSH mutez 1000000; # Fee pattern from July 26
AMOUNT; CMPLE; IF {FAIL} {}; AMOUNT; CMPLE; IF {FAIL} {};
# Provide the data # Provide the data
CDR; DIP {CDDR}} CDR; DIP {CDDR}}

View File

@ -1,9 +1,9 @@
parameter key_hash; parameter key_hash;
storage (pair timestamp (pair tez key_hash)); storage (pair timestamp (pair mutez key_hash));
code { DUP; CDAR; code { DUP; CDAR;
# If the time is more than 2 weeks, any amount makes you king # If the time is more than 2 weeks, any amount makes you king
NOW; CMPGT; NOW; CMPGT;
# User becomes king of tez # User becomes king of mutez
IF { CAR; AMOUNT; PAIR; NOW; PUSH int 604800; ADD; PAIR; IF { CAR; AMOUNT; PAIR; NOW; PUSH int 604800; ADD; PAIR;
NIL operation } NIL operation }
# Check balance to see if user has paid enough to become the new king # Check balance to see if user has paid enough to become the new king

View File

@ -2,7 +2,7 @@ parameter unit;
storage (list (contract unit)); storage (list (contract unit));
code { CDR; DUP; code { CDR; DUP;
DIP {NIL operation}; PUSH bool True; # Setup loop DIP {NIL operation}; PUSH bool True; # Setup loop
LOOP {IF_CONS { PUSH tez "1.00"; UNIT; TRANSFER_TOKENS; # Make transfer LOOP {IF_CONS { PUSH mutez 1000000; UNIT; TRANSFER_TOKENS; # Make transfer
SWAP; DIP {CONS}; PUSH bool True} # Setup for next round of loop SWAP; DIP {CONS}; PUSH bool True} # Setup for next round of loop
{ NIL (contract unit); PUSH bool False}}; # Data to satisfy types and end loop { NIL (contract unit); PUSH bool False}}; # Data to satisfy types and end loop
DROP; PAIR}; # Calling convention DROP; PAIR}; # Calling convention

View File

@ -1,5 +1,5 @@
parameter unit; parameter unit;
storage (pair timestamp (pair tez (contract unit))); storage (pair timestamp (pair mutez (contract unit)));
code { CDR; # Ignore the parameter code { CDR; # Ignore the parameter
DUP; # Duplicate the storage DUP; # Duplicate the storage
CAR; # Get the timestamp CAR; # Get the timestamp

View File

@ -1,4 +1,4 @@
parameter unit; parameter unit;
storage (pair (pair nat (pair nat (pair (pair (pair nat tez) nat) nat))) nat); storage (pair (pair nat (pair nat (pair (pair (pair nat mutez) nat) nat))) nat);
code { MAP_CDADDAADR { PUSH tez "1.00" ; ADD } ; code { MAP_CDADDAADR { PUSH mutez 1000000 ; ADD } ;
NIL operation ; SWAP; SET_CAR }; NIL operation ; SWAP; SET_CAR };

View File

@ -4,7 +4,7 @@ code
{ DUP ; CAR ; PUSH nat 0 ; CMPNEQ ; { DUP ; CAR ; PUSH nat 0 ; CMPNEQ ;
DIP { DUP ; CAR ; DIP { CDR ; NIL operation } } ; DIP { DUP ; CAR ; DIP { CDR ; NIL operation } } ;
LOOP LOOP
{ PUSH tez "5.00" ; { PUSH mutez 5000000 ;
PUSH bool True ; # delegatable PUSH bool True ; # delegatable
NONE key_hash ; # delegate NONE key_hash ; # delegate
PUSH key_hash "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ; # manager PUSH key_hash "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ; # manager

View File

@ -1,7 +1,7 @@
parameter unit; parameter unit;
storage (pair (contract unit) (contract unit)); storage (pair (contract unit) (contract unit));
code { CDR; DUP; CAR; PUSH tez "5.00"; UNIT; code { CDR; DUP; CAR; PUSH mutez 5000000; UNIT;
TRANSFER_TOKENS; TRANSFER_TOKENS;
DIP {DUP; CDR; DIP {DUP; CDR;
PUSH tez "5.00"; UNIT; TRANSFER_TOKENS}; PUSH mutez 5000000; UNIT; TRANSFER_TOKENS};
DIIP{NIL operation};DIP{CONS};CONS;PAIR}; DIIP{NIL operation};DIP{CONS};CONS;PAIR};

View File

@ -1,5 +1,5 @@
parameter tez; parameter mutez;
storage (pair (pair nat (pair nat (pair (pair (pair nat tez) nat) nat))) nat); storage (pair (pair nat (pair nat (pair (pair (pair nat mutez) nat) nat))) nat);
code { DUP ; CAR ; SWAP ; CDR ; code { DUP ; CAR ; SWAP ; CDR ;
SET_CADDAADR @annot ; SET_CADDAADR @annot ;
NIL operation ; PAIR }; NIL operation ; PAIR };

View File

@ -8,7 +8,7 @@ code { DUP;
IF { PUSH bool False} # End the loop IF { PUSH bool False} # End the loop
{ PUSH nat 1; SWAP; SUB; ABS; # Subtract 1. The ABS is to make it back into a nat { PUSH nat 1; SWAP; SUB; ABS; # Subtract 1. The ABS is to make it back into a nat
PUSH string "init"; # Storage type PUSH string "init"; # Storage type
PUSH tez "5.00"; # Strating balance PUSH mutez 5000000; # Strating balance
PUSH bool False; DUP; # Not spendable or delegatable PUSH bool False; DUP; # Not spendable or delegatable
NONE key_hash; NONE key_hash;
PUSH key_hash "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5"; PUSH key_hash "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5";

View File

@ -2,7 +2,7 @@ parameter key_hash;
storage unit; storage unit;
code { CAR; IMPLICIT_ACCOUNT; # Create an account for the recipient of the funds code { CAR; IMPLICIT_ACCOUNT; # Create an account for the recipient of the funds
DIP{UNIT}; # Push a value of the storage type below the contract DIP{UNIT}; # Push a value of the storage type below the contract
PUSH tez "1.00"; # The person can have a ꜩ PUSH mutez 1000000; # The person can have a ꜩ
UNIT; # Push the contract's argument type UNIT; # Push the contract's argument type
TRANSFER_TOKENS; # Run the transfer TRANSFER_TOKENS; # Run the transfer
NIL operation; SWAP; CONS; NIL operation; SWAP; CONS;

View File

@ -1,5 +1,5 @@
parameter (pair tez tez); parameter (pair mutez mutez);
storage (option (pair tez tez)); storage (option (pair mutez mutez));
code {CAR; DUP; DUP; CAR; DIP{CDR}; ADD; code {CAR; DUP; DUP; CAR; DIP{CDR}; ADD;
DIP{DUP; CAR; DIP{CDR}; SUB}; DIP{DUP; CAR; DIP{CDR}; SUB};
PAIR; SOME; NIL operation; PAIR}; PAIR; SOME; NIL operation; PAIR};

View File

@ -1,3 +1,3 @@
parameter unit; parameter unit;
storage tez; storage mutez;
code { DROP; AMOUNT; NIL operation; PAIR }; code { DROP; AMOUNT; NIL operation; PAIR };

View File

@ -1,5 +1,5 @@
parameter (contract unit); parameter (contract unit);
storage unit; storage unit;
code { CAR; DIP{UNIT}; PUSH tez "100.00"; UNIT; code { CAR; DIP{UNIT}; PUSH mutez 100000000; UNIT;
TRANSFER_TOKENS; TRANSFER_TOKENS;
NIL operation; SWAP; CONS; PAIR}; NIL operation; SWAP; CONS; PAIR};

View File

@ -313,18 +313,18 @@ let test_example () =
let bootstrap_0 = List.nth Account.bootstrap_accounts 0 in let bootstrap_0 = List.nth Account.bootstrap_accounts 0 in
get_balance_res bootstrap_0 sb >>=?? fun _balance -> get_balance_res bootstrap_0 sb >>=?? fun _balance ->
let amount = Proto_alpha.Alpha_context.Tez.to_string @@ Cast.cents_of_int Script.init_amount in let amount = string_of_int (Script.init_amount * 10000) in
(* Get the current balance of the contract *) (* Get the current balance of the contract *)
test_output ~location: __LOC__ "balance" "\"111\"" "Unit" ("\"" ^ amount ^ "\"") >>=? fun _ -> test_output ~location: __LOC__ "balance" "111000000" "Unit" amount >>=? fun _ ->
(* Test comparisons on tez { EQ ; GT ; LT ; GE ; LE } *) (* Test comparisons on tez { EQ ; GT ; LT ; GE ; LE } *)
test_output ~location: __LOC__ "compare" "{}" "(Pair \"1.00\" \"2.00\")" "{ False ; False ; True ; False ; True }" >>=? fun _ -> test_output ~location: __LOC__ "compare" "{}" "(Pair 1000000 2000000)" "{ False ; False ; True ; False ; True }" >>=? fun _ ->
test_output ~location: __LOC__ "compare" "{}" "(Pair \"2.00\" \"1.00\")" "{ False ; True ; False ; True ; False }" >>=? fun _ -> test_output ~location: __LOC__ "compare" "{}" "(Pair 2000000 1000000)" "{ False ; True ; False ; True ; False }" >>=? fun _ ->
test_output ~location: __LOC__ "compare" "{}" "(Pair \"2.37\" \"2.37\")" "{ True ; False ; False ; True ; True }" >>=? fun _ -> test_output ~location: __LOC__ "compare" "{}" "(Pair 2370000 2370000)" "{ True ; False ; False ; True ; True }" >>=? fun _ ->
(* Test addition and subtraction on tez *) (* Test addition and subtraction on tez *)
test_output ~location: __LOC__ "tez_add_sub" "None" "(Pair \"2\" \"1\")" "(Some (Pair \"3\" \"1\"))" >>=? fun _ -> test_output ~location: __LOC__ "tez_add_sub" "None" "(Pair 2000000 1000000)" "(Some (Pair 3000000 1000000))" >>=? fun _ ->
test_output ~location: __LOC__ "tez_add_sub" "None" "(Pair \"2.31\" \"1.01\")" "(Some (Pair \"3.32\" \"1.3\"))" >>=? fun _ -> test_output ~location: __LOC__ "tez_add_sub" "None" "(Pair 2310000 1010000)" "(Some (Pair 3320000 1300000))" >>=? fun _ ->
(* Test get first element of list *) (* Test get first element of list *)
test_output ~location: __LOC__ "first" "111" "{ 1 ; 2 ; 3 ; 4 }" "1" >>=? fun _ -> test_output ~location: __LOC__ "first" "111" "{ 1 ; 2 ; 3 ; 4 }" "1" >>=? fun _ ->
@ -404,9 +404,9 @@ let test_example () =
test_output ~location: __LOC__ "set_cdr" "(Pair \"hello\" 500)" "3" "(Pair \"hello\" 3)" >>=? fun _ -> test_output ~location: __LOC__ "set_cdr" "(Pair \"hello\" 500)" "3" "(Pair \"hello\" 3)" >>=? fun _ ->
test_output ~location: __LOC__ "set_cdr" "(Pair \"hello\" 7)" "100" "(Pair \"hello\" 100)" >>=? fun _ -> test_output ~location: __LOC__ "set_cdr" "(Pair \"hello\" 7)" "100" "(Pair \"hello\" 100)" >>=? fun _ ->
test_storage ~location: __LOC__ "set_caddaadr" "(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 \"0\") 4) 5))) 6)" "\"3\"" "(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 \"3\") 4) 5))) 6)" >>=? fun _ -> test_storage ~location: __LOC__ "set_caddaadr" "(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 0) 4) 5))) 6)" "3000000" "(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 3000000) 4) 5))) 6)" >>=? fun _ ->
test_storage ~location: __LOC__ "map_caddaadr" "(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 \"0\") 4) 5))) 6)" "Unit" "(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 \"1\") 4) 5))) 6)" >>=? fun _ -> test_storage ~location: __LOC__ "map_caddaadr" "(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 0) 4) 5))) 6)" "Unit" "(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 1000000) 4) 5))) 6)" >>=? fun _ ->
(* Did the given key sign the string? (key is bootstrap1) *) (* Did the given key sign the string? (key is bootstrap1) *)
test_success ~location: __LOC__ "check_signature" "(Pair \"1f19f8f37e80d96797b019f30d23ede6a26a0f698220f942103a3401f047623746e51a9c6e77e269b5df9593994ab96b001aae0f73728a2259187cb640b61e01\" \"hello\")" "\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav\"" >>=? fun _ -> test_success ~location: __LOC__ "check_signature" "(Pair \"1f19f8f37e80d96797b019f30d23ede6a26a0f698220f942103a3401f047623746e51a9c6e77e269b5df9593994ab96b001aae0f73728a2259187cb640b61e01\" \"hello\")" "\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav\"" >>=? fun _ ->