Skip to content

Commit dc8b1ae

Browse files
Merge #2968
2968: NCTL: upload chainspecs from releases r=TomVasile a=TomVasile Changes: - uploads chainspecs when merging to release branches or tagging - add missing chainspecs Co-authored-by: TomVasile <43349666+TomVasile@users.noreply.github.com>
2 parents 72b698e + 68a6c77 commit dc8b1ae

3 files changed

Lines changed: 459 additions & 1 deletion

File tree

ci/nctl_upgrade_stage.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function clean_up() {
1111

1212
if [ "$EXIT_CODE" = '0' ] && [ ! -z ${DRONE} ]; then
1313
# Running in CI so don't cleanup stage dir
14-
echo "Script completed succesfully!"
14+
echo "Script completed successfully!"
1515
return
1616
fi
1717

@@ -29,6 +29,7 @@ BIN_BUILD_DIR="$ROOT_DIR/target/release"
2929
WASM_BUILD_DIR="$ROOT_DIR/target/wasm32-unknown-unknown/release"
3030
CONFIG_DIR="$ROOT_DIR/resources/local"
3131
TEMP_STAGE_DIR='/tmp/nctl_upgrade_stage'
32+
NCTL_UPGRADE_CHAINSPECS="$ROOT_DIR/utils/nctl/sh/scenarios/chainspecs"
3233

3334
# FILES
3435
BIN_ARRAY=(casper-node)
@@ -92,3 +93,8 @@ for i in "${CONFIG_ARRAY[@]}"; do
9293
fi
9394
echo ""
9495
done
96+
97+
# Copy NCTL upgrade chainspecs
98+
pushd "$NCTL_UPGRADE_CHAINSPECS"
99+
cp upgrade* "$TEMP_STAGE_DIR"
100+
popd
Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
[protocol]
2+
# Protocol version.
3+
version = '1.0.0'
4+
# Whether we need to clear latest blocks back to the switch block just before the activation point or not.
5+
hard_reset = false
6+
# This protocol version becomes active at this point.
7+
#
8+
# If it is a timestamp string, it represents the timestamp for the genesis block. This is the beginning of era 0. By
9+
# this time, a sufficient majority (> 50% + F/2 — see finality_threshold_fraction below) of validator nodes must be up
10+
# and running to start the blockchain. This timestamp is also used in seeding the pseudo-random number generator used
11+
# in contract-runtime for computing genesis post-state hash.
12+
#
13+
# If it is an integer, it represents an era ID, meaning the protocol version becomes active at the start of this era.
14+
activation_point = '${TIMESTAMP}'
15+
# Optional era ID in which the last emergency restart happened.
16+
#last_emergency_restart = 0
17+
18+
[network]
19+
# Human readable name for convenience; the genesis_hash is the true identifier. The name influences the genesis hash by
20+
# contributing to the seeding of the pseudo-random number generator used in contract-runtime for computing genesis
21+
# post-state hash.
22+
name = 'casper-example'
23+
# The maximum size of an acceptable networking message in bytes. Any message larger than this will
24+
# be rejected at the networking level.
25+
maximum_net_message_size = 23_068_672
26+
27+
[core]
28+
# Era duration.
29+
era_duration = '41seconds'
30+
# Minimum number of blocks per era. An era will take longer than `era_duration` if that is necessary to reach the
31+
# minimum height.
32+
minimum_era_height = 10
33+
# Number of slots available in validator auction.
34+
validator_slots = 5
35+
# Number of eras before an auction actually defines the set of validators. If you bond with a sufficient bid in era N,
36+
# you will be a validator in era N + auction_delay + 1.
37+
auction_delay = 3
38+
# The period after genesis during which a genesis validator's bid is locked.
39+
locked_funds_period = '90days'
40+
# Default number of eras that need to pass to be able to withdraw unbonded funds.
41+
unbonding_delay = 14
42+
# Round seigniorage rate represented as a fraction of the total supply.
43+
#
44+
# Annual issuance: 2%
45+
# Minimum round exponent: 12
46+
# Ticks per year: 31536000000
47+
#
48+
# (1+0.02)^((2^12)/31536000000)-1 is expressed as a fractional number below.
49+
round_seigniorage_rate = [15_959, 6_204_824_582_392]
50+
# Maximum number of associated keys for a single account.
51+
max_associated_keys = 100
52+
# Maximum height of contract runtime call stack.
53+
max_runtime_call_stack_height = 12
54+
# Maximum serialized size of values stored in global state.
55+
max_stored_value_size = 8_388_608
56+
# Minimum allowed delegation amount in motes
57+
minimum_delegation_amount = 500_000_000_000
58+
59+
[highway]
60+
# A number between 0 and 1 representing the fault tolerance threshold as a fraction, used by the internal finalizer.
61+
# It is the fraction of validators that would need to equivocate to make two honest nodes see two conflicting blocks as
62+
# finalized: A higher value F makes it safer to rely on finalized blocks. It also makes it more difficult to finalize
63+
# blocks, however, and requires strictly more than (F + 1)/2 validators to be working correctly.
64+
finality_threshold_fraction = [1, 3]
65+
# Integer between 0 and 255. The power of two that is the number of milliseconds in the minimum round length, and
66+
# therefore the minimum delay between a block and its child. E.g. 14 means 2^14 milliseconds, i.e. about 16 seconds.
67+
minimum_round_exponent = 12
68+
# Integer between 0 and 255. Must be greater than `minimum_round_exponent`. The power of two that is the number of
69+
# milliseconds in the maximum round length, and therefore the maximum delay between a block and its child. E.g. 19
70+
# means 2^19 milliseconds, i.e. about 8.7 minutes.
71+
maximum_round_exponent = 19
72+
# The factor by which rewards for a round are multiplied if the greatest summit has ≤50% quorum, i.e. no finality.
73+
# Expressed as a fraction (1/5 by default).
74+
reduced_reward_multiplier = [1, 5]
75+
76+
[deploys]
77+
# The maximum number of Motes allowed to be spent during payment. 0 means unlimited.
78+
max_payment_cost = '0'
79+
# The duration after the deploy timestamp that it can be included in a block.
80+
max_ttl = '1day'
81+
# The maximum number of other deploys a deploy can depend on (require to have been executed before it can execute).
82+
max_dependencies = 10
83+
# Maximum block size in bytes including deploys contained by the block. 0 means unlimited.
84+
max_block_size = 10_485_760
85+
# Maximum deploy size in bytes. Size is of the deploy when serialized via ToBytes.
86+
max_deploy_size = 1_048_576
87+
# The maximum number of non-transfer deploys permitted in a single block.
88+
block_max_deploy_count = 100
89+
# The maximum number of wasm-less transfer deploys permitted in a single block.
90+
block_max_transfer_count = 1000
91+
# The maximum number of approvals permitted in a single block.
92+
block_max_approval_count = 2600
93+
# The upper limit of total gas of all deploys in a block.
94+
block_gas_limit = 10_000_000_000_000
95+
# The limit of length of serialized payment code arguments.
96+
payment_args_max_length = 1024
97+
# The limit of length of serialized session code arguments.
98+
session_args_max_length = 1024
99+
# The minimum amount in motes for a valid native transfer.
100+
native_transfer_minimum_motes = 2_500_000_000
101+
102+
[wasm]
103+
# Amount of free memory (in 64kB pages) each contract can use for stack.
104+
max_memory = 64
105+
# Max stack height (native WebAssembly stack limiter).
106+
max_stack_height = 188
107+
108+
[wasm.storage_costs]
109+
# Gas charged per byte stored in the global state.
110+
gas_per_byte = 630_000
111+
112+
[wasm.opcode_costs]
113+
# Bit operations multiplier.
114+
bit = 300
115+
# Arithmetic add operations multiplier.
116+
add = 210
117+
# Mul operations multiplier.
118+
mul = 240
119+
# Div operations multiplier.
120+
div = 320
121+
# Memory load operation multiplier.
122+
load = 2_500
123+
# Memory store operation multiplier.
124+
store = 4_700
125+
# Const store operation multiplier.
126+
const = 110
127+
# Local operations multiplier.
128+
local = 390
129+
# Global operations multiplier.
130+
global = 390
131+
# Control flow operations multiplier.
132+
control_flow = 440
133+
# Integer operations multiplier.
134+
integer_comparison = 250
135+
# Conversion operations multiplier.
136+
conversion = 420
137+
# Unreachable operation multiplier.
138+
unreachable = 270
139+
# Nop operation multiplier.
140+
nop = 200
141+
# Get current memory operation multiplier.
142+
current_memory = 290
143+
# Grow memory cost, per page (64kb).
144+
grow_memory = 240_000
145+
# Regular opcode cost.
146+
regular = 210
147+
148+
# Host function declarations are located in smart_contracts/contract/src/ext_ffi.rs
149+
[wasm.host_function_costs]
150+
add = { cost = 5_800, arguments = [0, 0, 0, 0] }
151+
add_associated_key = { cost = 9_000, arguments = [0, 0, 0] }
152+
add_contract_version = { cost = 200, arguments = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }
153+
blake2b = { cost = 200, arguments = [0, 0, 0, 0] }
154+
call_contract = { cost = 4_500, arguments = [0, 0, 0, 0, 0, 420, 0] }
155+
call_versioned_contract = { cost = 200, arguments = [0, 0, 0, 0, 0, 0, 0, 0, 0] }
156+
create_contract_package_at_hash = { cost = 200, arguments = [0, 0] }
157+
create_contract_user_group = { cost = 200, arguments = [0, 0, 0, 0, 0, 0, 0, 0] }
158+
create_purse = { cost = 2_500_000_000, arguments = [0, 0] }
159+
disable_contract_version = { cost = 200, arguments = [0, 0, 0, 0] }
160+
get_balance = { cost = 3_800, arguments = [0, 0, 0] }
161+
get_blocktime = { cost = 330, arguments = [0] }
162+
get_caller = { cost = 380, arguments = [0] }
163+
get_key = { cost = 2_000, arguments = [0, 440, 0, 0, 0] }
164+
get_main_purse = { cost = 1_300, arguments = [0] }
165+
get_named_arg = { cost = 200, arguments = [0, 0, 0, 0] }
166+
get_named_arg_size = { cost = 200, arguments = [0, 0, 0] }
167+
get_phase = { cost = 710, arguments = [0] }
168+
get_system_contract = { cost = 1_100, arguments = [0, 0, 0] }
169+
has_key = { cost = 1_500, arguments = [0, 840] }
170+
is_valid_uref = { cost = 760, arguments = [0, 0] }
171+
load_named_keys = { cost = 42_000, arguments = [0, 0] }
172+
new_uref = { cost = 17_000, arguments = [0, 0, 590] }
173+
print = { cost = 20_000, arguments = [0, 4_600] }
174+
provision_contract_user_group_uref = { cost = 200, arguments = [0, 0, 0, 0, 0] }
175+
put_key = { cost = 38_000, arguments = [0, 1_100, 0, 0] }
176+
read_host_buffer = { cost = 3_500, arguments = [0, 310, 0] }
177+
read_value = { cost = 6_000, arguments = [0, 0, 0] }
178+
read_value_local = { cost = 5_500, arguments = [0, 590, 0] }
179+
remove_associated_key = { cost = 4_200, arguments = [0, 0] }
180+
remove_contract_user_group = { cost = 200, arguments = [0, 0, 0, 0] }
181+
remove_contract_user_group_urefs = { cost = 200, arguments = [0, 0, 0, 0, 0, 0] }
182+
remove_key = { cost = 61_000, arguments = [0, 3_200] }
183+
ret = { cost = 23_000, arguments = [0, 420_000] }
184+
revert = { cost = 500, arguments = [0] }
185+
set_action_threshold = { cost = 74_000, arguments = [0, 0] }
186+
transfer_from_purse_to_account = { cost = 2_500_000_000, arguments = [0, 0, 0, 0, 0, 0, 0, 0, 0] }
187+
transfer_from_purse_to_purse = { cost = 82_000, arguments = [0, 0, 0, 0, 0, 0, 0, 0] }
188+
transfer_to_account = { cost = 2_500_000_000, arguments = [0, 0, 0, 0, 0, 0, 0] }
189+
update_associated_key = { cost = 4_200, arguments = [0, 0, 0] }
190+
write = { cost = 14_000, arguments = [0, 0, 0, 980] }
191+
write_local = { cost = 9_500, arguments = [0, 1_800, 0, 520] }
192+
193+
[system_costs]
194+
wasmless_transfer_cost = 100_000_000
195+
196+
[system_costs.auction_costs]
197+
get_era_validators = 10_000
198+
read_seigniorage_recipients = 10_000
199+
add_bid = 10_000
200+
withdraw_bid = 10_000
201+
delegate = 10_000
202+
undelegate = 10_000
203+
run_auction = 10_000
204+
slash = 10_000
205+
distribute = 10_000
206+
withdraw_delegator_reward = 10_000
207+
withdraw_validator_reward = 10_000
208+
read_era_id = 10_000
209+
activate_bid = 10_000
210+
211+
[system_costs.mint_costs]
212+
mint = 2_500_000_000
213+
reduce_total_supply = 10_000
214+
create = 2_500_000_000
215+
balance = 10_000
216+
transfer = 10_000
217+
read_base_round_reward = 10_000
218+
219+
[system_costs.handle_payment_costs]
220+
get_payment_purse = 10_000
221+
set_refund_purse = 10_000
222+
get_refund_purse = 10_000
223+
finalize_payment = 10_000
224+
225+
[system_costs.standard_payment_costs]
226+
pay = 10_000

0 commit comments

Comments
 (0)