diff --git a/src/bin_client/test/test_basic.sh b/src/bin_client/test/test_basic.sh index 566606689..ed10e9d50 100755 --- a/src/bin_client/test/test_basic.sh +++ b/src/bin_client/test/test_basic.sh @@ -19,9 +19,7 @@ $client rpc call '/blocks/head/raw_context/delegates/?depth=2' | assert '{ "cont $client rpc call '/blocks/head/raw_context/non-existent?depth=-1' | assert 'No service found at this URL' $client rpc call '/blocks/head/raw_context/non-existent?depth=0' | assert 'No service found at this URL' - -$client bake for bootstrap1 -max-priority 512 -sleep 1 +bake key1=foo key2=bar @@ -55,73 +53,43 @@ $client get balance for $key2 | assert "2,000 ꜩ" # Should fail # $client transfer 999.95 from $key2 to $key1 -# wait for the delay between two block -sleep 1 - -$client bake for bootstrap1 -max-priority 512 +bake $client remember program noop file:contracts/noop.tz -$client typecheck program noop -$client originate contract noop \ +$client typecheck program file:contracts/noop.tz +bake_after $client originate contract noop \ for $key1 transferring 1,000 from bootstrap1 \ - running noop -sleep 1 -$client bake for bootstrap1 -max-priority 512 -$client transfer 10 from bootstrap1 to noop -arg "Unit" -sleep 1 -$client bake for bootstrap1 -max-priority 512 + running file:contracts/noop.tz + +bake_after $client transfer 10 from bootstrap1 to noop -arg "Unit" -$client originate contract hardlimit \ +bake_after $client originate contract hardlimit \ for $key1 transferring 1,000 from bootstrap1 \ running file:contracts/hardlimit.tz -init "3" -sleep 1 -$client bake for bootstrap1 -max-priority 512 -$client transfer 10 from bootstrap1 to hardlimit -arg "Unit" -sleep 1 -$client bake for bootstrap1 -max-priority 512 -$client transfer 10 from bootstrap1 to hardlimit -arg "Unit" -# $client transfer 10 from bootstrap1 to hardlimit -arg "unit" # should fail -sleep 1 -$client bake for bootstrap1 -max-priority 512 +bake_after $client transfer 10 from bootstrap1 to hardlimit -arg "Unit" +bake_after $client transfer 10 from bootstrap1 to hardlimit -arg "Unit" -$client originate account free_account for $key1 \ +bake_after $client originate account free_account for $key1 \ transferring 1,000 from bootstrap1 -delegatable -sleep 1 -$client bake for bootstrap1 -max-priority 512 $client get delegate for free_account -sleep 1 -$client bake for bootstrap1 -max-priority 512 -$client register key $key2 as delegate -sleep 1 -$client bake for bootstrap1 -max-priority 512 -$client set delegate for free_account to $key2 -sleep 1 -$client bake for bootstrap1 -max-priority 512 + +bake_after $client register key $key2 as delegate +bake_after $client set delegate for free_account to $key2 $client get delegate for free_account $client get balance for bootstrap5 | assert "4,000,000 ꜩ" -$client transfer 400,000 from bootstrap5 to bootstrap1 -fee 0 -sleep 1 -$client bake for bootstrap1 -max-priority 512 -$client transfer 400,000 from bootstrap1 to bootstrap5 -fee 0 -sleep 1 -$client bake for bootstrap1 -max-priority 512 +bake_after $client transfer 400,000 from bootstrap5 to bootstrap1 -fee 0 +bake_after $client transfer 400,000 from bootstrap1 to bootstrap5 -fee 0 $client get balance for bootstrap5 | assert "4,000,000 ꜩ" -sleep 1 - -$client activate account $key4 with king_commitment.json --no-confirmation -$client activate account $key5 with queen_commitment.json --no-confirmation -$client bake for bootstrap1 -max-priority 512 -sleep 1 +bake_after $client activate account $key4 with king_commitment.json --no-confirmation +bake_after $client activate account $key5 with queen_commitment.json --no-confirmation $client get balance for $key4 | assert "23,932,454.669,343 ꜩ" $client get balance for $key5 | assert "72,954,577.464,032 ꜩ" -$client transfer 10 from $key4 to $key5 - - +bake_after $client transfer 10 from $key4 to $key5 echo echo End of test diff --git a/src/bin_client/test/test_contracts.sh b/src/bin_client/test/test_contracts.sh index f79f60430..ef5305d57 100755 --- a/src/bin_client/test/test_contracts.sh +++ b/src/bin_client/test/test_contracts.sh @@ -9,8 +9,7 @@ source $test_dir/test_lib.inc.sh "$@" start_node 1 activate_alpha -sleep 2 -$client bake for bootstrap5 -max-priority 512 +bake key1=foo key2=bar @@ -386,16 +385,12 @@ init_with_transfer $contract_dir/create_account.tz $key2 \ "\"$(get_contract_addr test_transfer_account1)\"" 1,000 bootstrap1 $client transfer 100 from bootstrap1 to create_account \ -arg '"tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx"' | assert_in_output "New contract" -$client bake for bootstrap1 -max-priority 512 -sleep 1 - +bake # Creates a contract, transfers data to it and stores the data init_with_transfer $contract_dir/create_contract.tz $key2 \ "\"$(get_contract_addr test_transfer_account1)\"" 1,000 bootstrap1 -$client transfer 0 from bootstrap1 to create_contract -arg '"tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx"' -$client bake for bootstrap1 -max-priority 512 -sleep 1 +bake_after $client transfer 0 from bootstrap1 to create_contract -arg '"tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx"' assert_storage_contains create_contract '"abcdefg"' # Test DEFAULT_ACCOUNT @@ -433,52 +428,28 @@ assert_output $contract_dir/hash_consistency_checker.tz Unit \ init_with_transfer $contract_dir/big_map_mem.tz $key1\ '(Pair { Elt 1 Unit ; Elt 2 Unit ; Elt 3 Unit } Unit)' \ 100 bootstrap1 -$client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 0 False)' -$client bake for bootstrap1 -max-priority 512 -sleep 1 +bake_after $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 0 False)' assert_fails $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 0 True)' -$client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 1 True)' -$client bake for bootstrap1 -max-priority 512 -sleep 1 +bake_after $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 1 True)' assert_fails $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 1 False)' -$client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 2 True)' -$client bake for bootstrap1 -max-priority 512 -sleep 1 +bake_after $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 2 True)' assert_fails $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 2 False)' -$client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 3 True)' -$client bake for bootstrap1 -max-priority 512 -sleep 1 +bake_after $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 3 True)' assert_fails $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 3 False)' -$client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 4 False)' -$client bake for bootstrap1 -max-priority 512 -sleep 1 +bake_after $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 4 False)' assert_fails $client transfer 1 from bootstrap1 to big_map_mem -arg '(Pair 4 True)' init_with_transfer $contract_dir/big_map_get_add.tz $key1\ '(Pair { Elt 0 1 ; Elt 1 2 ; Elt 2 3 } Unit)' \ 100 bootstrap1 -$client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 200 (Some 2)) (Pair 200 (Some 2)))' -$client bake for bootstrap1 -max-priority 512 -sleep 1 -$client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 200 None) (Pair 200 None))' -$client bake for bootstrap1 -max-priority 512 -sleep 1 -$client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 200 None) (Pair 300 None))' -$client bake for bootstrap1 -max-priority 512 -sleep 1 -$client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 1 None) (Pair 200 None))' -$client bake for bootstrap1 -max-priority 512 -sleep 1 -$client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 1 (Some 2)) (Pair 0 (Some 1)))' -$client bake for bootstrap1 -max-priority 512 -sleep 1 -$client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 400 (Some 1232)) (Pair 400 (Some 1232)))' -$client bake for bootstrap1 -max-priority 512 -sleep 1 -$client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 401 (Some 0)) (Pair 400 (Some 1232)))' -$client bake for bootstrap1 -max-priority 512 -sleep 1 +bake_after $client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 200 (Some 2)) (Pair 200 (Some 2)))' +bake_after $client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 200 None) (Pair 200 None))' +bake_after $client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 200 None) (Pair 300 None))' +bake_after $client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 1 None) (Pair 200 None))' +bake_after $client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 1 (Some 2)) (Pair 0 (Some 1)))' +bake_after $client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 400 (Some 1232)) (Pair 400 (Some 1232)))' +bake_after $client transfer 1 from bootstrap1 to big_map_get_add -arg '(Pair (Pair 401 (Some 0)) (Pair 400 (Some 1232)))' printf "\nEnd of test\n" diff --git a/src/bin_client/test/test_fork.sh b/src/bin_client/test/test_fork.sh index eee5143a8..102319b00 100755 --- a/src/bin_client/test/test_fork.sh +++ b/src/bin_client/test/test_fork.sh @@ -23,7 +23,7 @@ dictator_secret="edsk31vznjHSSpGExDMHYASz45VZqXN4DPxvsa4hAyY8dHM28cZzp6" protocol_version="Ps1ZDZdgRP4PFDkzmFpiYtE7gJHioavCMxC96i9zJsK6URwSXSJ" protocol_short="Ps1ZDZdgRP4PFD" -$client bake for bootstrap1 -max-priority 512 +bake $client list understood protocols diff --git a/src/bin_client/test/test_injection_alpha.sh b/src/bin_client/test/test_injection_alpha.sh index dc4e1d73b..03baecdaa 100755 --- a/src/bin_client/test/test_injection_alpha.sh +++ b/src/bin_client/test/test_injection_alpha.sh @@ -23,7 +23,7 @@ dictator_secret="edsk31vznjHSSpGExDMHYASz45VZqXN4DPxvsa4hAyY8dHM28cZzp6" protocol_version="Ps1ZDZdgRP4PFDkzmFpiYtE7gJHioavCMxC96i9zJsK6URwSXSJ" protocol_short="Ps1ZDZdgRP4PFD" -$client bake for bootstrap1 -max-priority 512 +bake $client list understood protocols diff --git a/src/bin_client/test/test_lib.inc.sh b/src/bin_client/test/test_lib.inc.sh index 5549a4491..bfb7afd06 100755 --- a/src/bin_client/test/test_lib.inc.sh +++ b/src/bin_client/test/test_lib.inc.sh @@ -140,6 +140,15 @@ init_contract_from_file () { $client remember program "${NAME}" "file:${FILE}" } +bake () { + $client bake for bootstrap1 --max-priority 512 --minimal-timestamp +} + +bake_after () { + "$@" + bake +} + init_with_transfer () { local FILE="$1" local NAME=$(contract_name_of_file "${FILE}") @@ -151,15 +160,7 @@ init_with_transfer () { $client originate contract ${NAME} \ for ${KEY} transferring "${TRANSFER_AMT}" \ from ${TRANSFER_SRC} running "${FILE}" -init "${INITIAL_STORAGE}" - $client bake for bootstrap1 -max-priority 512 - sleep 1 -} - - -bake_after () { - "$@" - $client bake for bootstrap1 -max-priority 512 - sleep 1 + bake } # Takes a grep regexp and fails with an error message if command does not include diff --git a/src/bin_client/test/test_multinode.sh b/src/bin_client/test/test_multinode.sh index 5c055ca88..f213229cc 100755 --- a/src/bin_client/test/test_multinode.sh +++ b/src/bin_client/test/test_multinode.sh @@ -72,16 +72,16 @@ retry() { retry 2 15 assert_protocol "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK" -$client1 bake for bootstrap1 -max-priority 512 +$client1 bake for bootstrap1 --max-priority 512 --minimal-timestamp retry 2 15 assert_propagation_level 2 -$client2 bake for bootstrap2 -max-priority 512 +$client2 bake for bootstrap2 --max-priority 512 --minimal-timestamp retry 2 15 assert_propagation_level 3 -$client3 bake for bootstrap3 -max-priority 512 +$client3 bake for bootstrap3 --max-priority 512 --minimal-timestamp retry 2 15 assert_propagation_level 4 -$client4 bake for bootstrap4 -max-priority 512 +$client4 bake for bootstrap4 --max-priority 512 --minimal-timestamp retry 2 15 assert_propagation_level 5 endorse_hash=$($client3 endorse for bootstrap3 | extract_operation_hash) @@ -100,7 +100,7 @@ assert_contains_operation() { done } -$client4 bake for bootstrap4 -max-priority 512 +$client4 bake for bootstrap4 --max-priority 512 --minimal-timestamp retry 2 15 assert_contains_operation $endorse_hash retry 2 15 assert_contains_operation $transfer_hash diff --git a/src/bin_client/tezos-init-sandboxed-client.sh b/src/bin_client/tezos-init-sandboxed-client.sh index 5d19033df..ab35a7a16 100755 --- a/src/bin_client/tezos-init-sandboxed-client.sh +++ b/src/bin_client/tezos-init-sandboxed-client.sh @@ -221,7 +221,9 @@ activate_alpha() { activate protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK \ with fitness 1 \ and key dictator \ - and parameters "${parameters_file}" + and parameters "${parameters_file}" \ + --timestamp $(date +%FT%TZ --utc --date="1 hour ago") + } usage() { @@ -272,7 +274,7 @@ main () { cat </dev/null 2>&1 ; then tezos-client-reset; fi ; PATH="$client_dir/bin:\$PATH" ; export PATH ; -alias tezos-activate-alpha="$client -block genesis activate protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK with fitness 1 and key dictator and parameters $parameters_file" ; +alias tezos-activate-alpha="$client -block genesis activate protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK with fitness 1 and key dictator and parameters $parameters_file --timestamp $(date +%FT%TZ --utc --date="1 hour ago")" ; alias tezos-client-reset="rm -rf \"$client_dir\"; unalias tezos-activate-alpha tezos-client-reset" ; alias tezos-autocomplete="if [ \$ZSH_NAME ] ; then autoload bashcompinit ; bashcompinit ; fi ; source \"$bin_dir/bash-completion.sh\"" ; trap tezos-client-reset EXIT ; diff --git a/src/proto_alpha/lib_baking/client_baking_commands.ml b/src/proto_alpha/lib_baking/client_baking_commands.ml index 3e3107b41..12c981af7 100644 --- a/src/proto_alpha/lib_baking/client_baking_commands.ml +++ b/src/proto_alpha/lib_baking/client_baking_commands.ml @@ -37,14 +37,15 @@ let commands () = (fun max_priority delegate cctxt -> endorse_block cctxt ?max_priority delegate) ; command ~group ~desc: "Forge and inject block using the delegate rights." - (args3 max_priority_arg force_switch free_baking_switch) + (args4 max_priority_arg force_switch + free_baking_switch minimal_timestamp_switch) (prefixes [ "bake"; "for" ] @@ Client_keys.Public_key_hash.source_param ~name:"baker" ~desc: "name of the delegate owning the baking right" @@ stop) - (fun (max_priority, force, free_baking) delegate cctxt -> + (fun (max_priority, force, free_baking, minimal_timestamp) delegate cctxt -> bake_block cctxt cctxt#block - ~force ?max_priority ~free_baking delegate) ; + ~force ?max_priority ~minimal_timestamp ~free_baking delegate) ; command ~group ~desc: "Forge and inject a seed-nonce revelation operation." no_options (prefixes [ "reveal"; "nonce"; "for" ] diff --git a/src/proto_alpha/lib_baking/client_baking_lib.ml b/src/proto_alpha/lib_baking/client_baking_lib.ml index c0400b94a..6ba235dcc 100644 --- a/src/proto_alpha/lib_baking/client_baking_lib.ml +++ b/src/proto_alpha/lib_baking/client_baking_lib.ml @@ -11,7 +11,8 @@ open Proto_alpha open Alpha_context let bake_block (cctxt : #Proto_alpha.full) block - ?force ?max_priority ?(free_baking=false) ?src_sk delegate = + ?force ?max_priority ?(free_baking=false) ?(minimal_timestamp=false) + ?src_sk delegate = begin match src_sk with | None -> @@ -28,7 +29,7 @@ let bake_block (cctxt : #Proto_alpha.full) block else None, None in Client_baking_forge.forge_block cctxt - ~timestamp:(Time.now ()) + ?timestamp:(if minimal_timestamp then None else Some (Time.now ())) ?force ?seed_nonce_hash ~src_sk block ~priority:(`Auto (delegate, max_priority, free_baking)) () >>=? fun block_hash -> diff --git a/src/proto_alpha/lib_baking/client_baking_lib.mli b/src/proto_alpha/lib_baking/client_baking_lib.mli index f1ca2aa43..0ab94cdc6 100644 --- a/src/proto_alpha/lib_baking/client_baking_lib.mli +++ b/src/proto_alpha/lib_baking/client_baking_lib.mli @@ -17,6 +17,7 @@ val bake_block: ?force:bool -> ?max_priority: int -> ?free_baking: bool -> + ?minimal_timestamp: bool -> ?src_sk:Client_keys.sk_locator -> public_key_hash -> unit tzresult Lwt.t diff --git a/src/proto_alpha/lib_client/client_proto_args.ml b/src/proto_alpha/lib_client/client_proto_args.ml index b4caa0265..e0fdbddc1 100644 --- a/src/proto_alpha/lib_client/client_proto_args.ml +++ b/src/proto_alpha/lib_client/client_proto_args.ml @@ -106,6 +106,13 @@ let force_switch = \ current head." () +let minimal_timestamp_switch = + switch + ~long:"minimal-timestamp" + ~doc:"Use the minimal timestamp instead of the current date \ + as timestamp of the baked block." + () + let delegatable_switch = switch ~long:"delegatable" diff --git a/src/proto_alpha/lib_client/client_proto_args.mli b/src/proto_alpha/lib_client/client_proto_args.mli index 26a8f9cfb..d0e26374a 100644 --- a/src/proto_alpha/lib_client/client_proto_args.mli +++ b/src/proto_alpha/lib_client/client_proto_args.mli @@ -23,6 +23,7 @@ val spendable_switch: (bool, Proto_alpha.full) Clic.arg val max_priority_arg: (int option, Proto_alpha.full) Clic.arg val free_baking_switch: (bool, Proto_alpha.full) Clic.arg val force_switch: (bool, Proto_alpha.full) Clic.arg +val minimal_timestamp_switch: (bool, Proto_alpha.full) Clic.arg val endorsement_delay_arg: (int, Proto_alpha.full) Clic.arg val no_print_source_flag: (bool, Proto_alpha.full) Clic.arg