1
+ # ###################################### PROTOCOL PARAMETERS #######################################
2
+
3
+ # The below parameters are fixed for the protocol and must be agreed upon by all node operators
4
+ # at genesis. They may subsequently be updated via governance decisions. Paths are set relative
5
+ # to $SUPRA_HOME.
6
+
7
+ # Core protocol parameters.
8
+ [instance ]
9
+ # A unique identifier for this instance of the Supra protocol. Prevents replay attacks across chains.
10
+ chain_id = 8
11
+ # The length of an epoch in seconds.
12
+ epoch_duration_secs = 7200
13
+ # The number of seconds that stake locked in a Stake Pool will automatically be locked up for when
14
+ # its current lockup expires, if no request is made to unlock it.
15
+ #
16
+ # 48 hours.
17
+ recurring_lockup_duration_secs = 172800
18
+ # The number of seconds allocated for voting on governance proposals. Governance will initially be
19
+ # controlled by The Supra Foundation.
20
+ #
21
+ # 46 hours.
22
+ voting_duration_secs = 165600
23
+ # Determines whether the network will start with a faucet, amongst other things.
24
+ is_testnet = false
25
+ # Wednesday, Nov 20, 2024 12:00:00.000 AM (UTC).
26
+ genesis_timestamp_microseconds = 1732060800000000
27
+
28
+ # Parameters related to the mempool.
29
+ [mempool ]
30
+ # The maximum number of milliseconds that a node will wait before proposing a batch when it has
31
+ # at least one transaction to process.
32
+ max_batch_delay_ms = 500
33
+ # The maximum size of a batch. If `max_batch_size_bytes` is reached before `max_batch_delay_ms`
34
+ # then a batch will be proposed immediately.
35
+ max_batch_size_bytes = 5000000
36
+ # The amount of time that a node will wait before repeating a sync request for a batch that it
37
+ # is missing.
38
+ sync_retry_delay_ms = 2000
39
+ # The number of signers of the related batch certificate that a node should ask for a batch
40
+ # attempting to retry a sync request.
41
+ sync_retry_nodes = 3
42
+
43
+ # Parameters related to the Moonshot consensus protocol. See https:#arxiv.org/abs/2401.01791.
44
+ [moonshot ]
45
+ # The maximum number of milliseconds that the timestamp of a proposed block may be
46
+ # ahead of a node's local time when it attempts to vote for the block. Validators
47
+ # must wait until the timestamp of a certified block has passed before advancing to
48
+ # the next round and leaders must wait until the timestamp of the parent block has
49
+ # passed before proposing, so this limit prevents Byzantine leaders from forcing
50
+ # honest nodes to wait indefinitely by proposing blocks with timestamps that are
51
+ # arbitrarily far in the future.
52
+ block_recency_bound_ms = 500
53
+ # Causes the node to stop producing blocks when there are no transactions to be
54
+ # processed. If all nodes set this value to `true` then the chain will not produce
55
+ # new blocks when there are no transactions to process, conserving disk space.
56
+ halt_block_production_when_no_txs = false
57
+ # The type of leader election function to use. This function generates a schedule that ensures
58
+ # that every node eventually succeeds every other.
59
+ leader_elector = " FairSuccession"
60
+ # The delay after which the block proposer will create a new block despite not having any
61
+ # payload items to propose. Denominated in ms.
62
+ max_block_delay_ms = 1250
63
+ # The maximum number of batch availability certificates that may be included in a single
64
+ # consensus block.
65
+ max_payload_items_per_block = 50
66
+ # The number of rounds ahead of self.round for which this node should accept Optimistic Proposals,
67
+ # Votes and Timeouts. Must be the same for all nodes. This parameter is helps to limit the amount
68
+ # of memory that Byzantine nodes can consume, but the larger it is the more efficient syncing can
69
+ # become. This trade-off must be balanced.
70
+ message_recency_bound_rounds = 1000
71
+ # The delay after which the node will try to repeat sync requests for missing blocks.
72
+ # Denominated in ms. Should be the same for all nodes.
73
+ sync_retry_delay_ms = 1000
74
+ # The delay after which the node will send a Timeout message for its current Moonshot round,
75
+ # measured from the start of the round. Denominated in ms. Must be the same for all nodes.
76
+ timeout_delay_ms = 3500
77
+
78
+ # Parameters related to the MoveVM. Primarily related to governance features.
79
+ [move_vm ]
80
+ # Initially `false` until the network matures.
81
+ allow_new_validators = false
82
+ # The maximum stake that may be allocated to a Supra Validator. We are not currently doing
83
+ # stake-weighted voting, so this value does not impact our decentralization quotient. This
84
+ # may change in the future. Initially set to the total supply.
85
+ #
86
+ # Measured in Quants (1 Quant = 10^-8 SUPRA). Equal to 100_000_000_000 SUPRA.
87
+ max_stake = " 10000000000000000000"
88
+ # The minimum stake required to run a Supra Validator. There is no minimum at genesis
89
+ # because The Foundation's stake is added after the stake pools are created. We will increase
90
+ # it to its intended value of 55M SUPRA via governance. New nodes will not be able to join the
91
+ # validator set before the update is made. Measured in Quants (1 Quant = 10^-8 SUPRA).
92
+ min_stake = 0
93
+ # The number of tokens initially allocated to node operators. Tokens will be earned through block
94
+ # rewards.
95
+ operator_account_balance = 0
96
+ # The amount of Quants to transfer from each validator owner account to the corresponding stake pool
97
+ # after it has been created, during the genesis transaction. Adding the stake after creating the
98
+ # pool allows us to ensure that The Foundation's stake is not subject to the PBO locking schedule,
99
+ # which is only intended to apply to winners of the Project Blast Off campaign.
100
+ #
101
+ # Measured in Quants (1 Quant = 10^-8 SUPRA). Equal to 55_000_000 SUPRA.
102
+ pbo_owner_stake = 5500000000000000
103
+ # The number of seconds after `genesis_timestamp_microseconds` at which all accounts with
104
+ # allocations at genesis will be able to unlock their initial amounts. These amounts are stored
105
+ # in vesting contracts.
106
+ #
107
+ # Corresponds to Wednesday, Nov 20, 2024 12:00:00.000 AM (UTC).
108
+ remaining_balance_lockup_cliff_period_in_seconds = 0
109
+ # The amount of SUPRA required to qualify as a proposer (this parameter is currently unused).
110
+ required_proposer_stake = 0
111
+ # The annual percent yield for validators, proportional to their stake. Specified as a percentage
112
+ # with 2 decimals of precision in u64 format due to limitations in the MoveVM. The below value
113
+ # represents 12.85%.
114
+ rewards_apy_percentage = 1285
115
+ # The percentage of staking rewards earned by Supra Foundation controlled nodes that will be paid
116
+ # to the corresponding node operators. Specified as a percentage with 2 decimals of precision in
117
+ # u64 format due to limitations in the MoveVM. The below value represents 37.74%.
118
+ validator_commission_rate_percentage = 3774
119
+ # The percentage of new stake relative to the current total stake that can join the validator
120
+ # set or be added to existing validators within a single epoch.
121
+ voting_power_increase_limit = 33
122
+
123
+
124
+ # ######################################## NODE PARAMETERS #########################################
125
+
126
+ # The below parameters are node-specific and may be configured as required by the operator. Paths
127
+ # are set relative to $SUPRA_HOME.
128
+
129
+ [node ]
130
+ # The duration in seconds that a node waits between polling its connections to its peers.
131
+ connection_refresh_timeout_sec = 1
132
+ # If true, all components will attempt to load their previous state from disk. Otherwise,
133
+ # all components will start in their default state. Should always be `true` for testnet and
134
+ # mainnet.
135
+ resume = true
136
+ # The path to the TLS root certificate authority certificate.
137
+ root_ca_cert_path = " ./ca_certificate.pem"
138
+ # The port on which to listen for connections from the associated RPC node. Each validator
139
+ # may serve at most one RPC node.
140
+ rpc_access_port = 26000
141
+ # The path to the TLS certificate for this node.
142
+ server_cert_path = " ./server_supra_certificate.pem"
143
+ # The path to the private key to be used when negotiating TLS connections.
144
+ server_private_key_path = " ./server_supra_key.pem"
145
+
146
+ # Parameters for the blockchain database.
147
+ [node .database_setup .dbs .chain_store .rocks_db ]
148
+ # The path at which the database should be created.
149
+ path = " ./smr_storage"
150
+ # Whether the database should be pruned. If `true`, data that is more than `epochs_to_retain`
151
+ # old will be deleted.
152
+ enable_pruning = true
153
+
154
+ # Parameters for the DKG database.
155
+ [node .database_setup .dbs .ledger .rocks_db ]
156
+ # The path at which the database should be created.
157
+ path = " ./ledger_storage"
158
+
159
+ # Parameters related to database pruning.
160
+ [node .database_setup .prune_config ]
161
+ # Data stored more than `epochs_to_retain` ago will be pruned if `enable_pruning = true`.
162
+ epochs_to_retain = 84
0 commit comments