mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-05 10:32:19 +00:00
Turn AuRaConfig into useful JsonSpec (#970)
This commit is contained in:
parent
a6e2d936a3
commit
a693a911a6
93
chain/aura_config.go
Normal file
93
chain/aura_config.go
Normal file
@ -0,0 +1,93 @@
|
||||
/*
|
||||
Copyright 2023 The Erigon contributors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package chain
|
||||
|
||||
import (
|
||||
"github.com/ledgerwatch/erigon-lib/common"
|
||||
"github.com/ledgerwatch/erigon-lib/common/hexutility"
|
||||
)
|
||||
|
||||
// Different ways of specifying validators.
|
||||
type ValidatorSetJson struct {
|
||||
// A simple list of authorities.
|
||||
List []common.Address `json:"list"`
|
||||
// Address of a contract that indicates the list of authorities.
|
||||
SafeContract *common.Address `json:"safeContract"`
|
||||
// Address of a contract that indicates the list of authorities and enables reporting of their misbehaviour using transactions.
|
||||
Contract *common.Address `json:"contract"`
|
||||
// A map of starting blocks for each validator set.
|
||||
Multi map[uint64]*ValidatorSetJson `json:"multi"`
|
||||
}
|
||||
|
||||
// AuRaConfig is the consensus engine configs for proof-of-authority based sealing.
|
||||
type AuRaConfig struct {
|
||||
StepDuration *uint64 `json:"stepDuration"` // Block duration, in seconds.
|
||||
Validators *ValidatorSetJson `json:"validators"` // Valid authorities
|
||||
|
||||
// Starting step. Determined automatically if not specified.
|
||||
// To be used for testing only.
|
||||
StartStep *uint64 `json:"startStep"`
|
||||
ValidateScoreTransition *uint64 `json:"validateScoreTransition"` // Block at which score validation should start.
|
||||
ValidateStepTransition *uint64 `json:"validateStepTransition"` // Block from which monotonic steps start.
|
||||
ImmediateTransitions *bool `json:"immediateTransitions"` // Whether transitions should be immediate.
|
||||
BlockReward *uint64 `json:"blockReward"` // Reward per block in wei.
|
||||
// Block at which the block reward contract should start being used. This option allows one to
|
||||
// add a single block reward contract transition and is compatible with the multiple address
|
||||
// option `block_reward_contract_transitions` below.
|
||||
BlockRewardContractTransition *uint64 `json:"blockRewardContractTransition"`
|
||||
/// Block reward contract address which overrides the `block_reward` setting. This option allows
|
||||
/// one to add a single block reward contract address and is compatible with the multiple
|
||||
/// address option `block_reward_contract_transitions` below.
|
||||
BlockRewardContractAddress *common.Address `json:"blockRewardContractAddress"`
|
||||
// Block reward contract addresses with their associated starting block numbers.
|
||||
//
|
||||
// Setting the block reward contract overrides `block_reward`. If the single block reward
|
||||
// contract address is also present then it is added into the map at the block number stored in
|
||||
// `block_reward_contract_transition` or 0 if that block number is not provided. Therefore both
|
||||
// a single block reward contract transition and a map of reward contract transitions can be
|
||||
// used simultaneously in the same configuration. In such a case the code requires that the
|
||||
// block number of the single transition is strictly less than any of the block numbers in the
|
||||
// map.
|
||||
BlockRewardContractTransitions map[uint]common.Address `json:"blockRewardContractTransitions"`
|
||||
// Block at which maximum uncle count should be considered.
|
||||
MaximumUncleCountTransition *uint64 `json:"maximumUncleCountTransition"`
|
||||
// Maximum number of accepted uncles.
|
||||
MaximumUncleCount *uint `json:"maximumUncleCount"`
|
||||
// Strict validation of empty steps transition block.
|
||||
StrictEmptyStepsTransition *uint `json:"strictEmptyStepsTransition"`
|
||||
// The random number contract's address, or a map of contract transitions.
|
||||
RandomnessContractAddress map[uint64]common.Address `json:"randomnessContractAddress"`
|
||||
// The addresses of contracts that determine the block gas limit starting from the block number
|
||||
// associated with each of those contracts.
|
||||
BlockGasLimitContractTransitions map[uint64]common.Address `json:"blockGasLimitContractTransitions"`
|
||||
// The block number at which the consensus engine switches from AuRa to AuRa with POSDAO
|
||||
// modifications.
|
||||
PosdaoTransition *uint64 `json:"PosdaoTransition"`
|
||||
// Stores human-readable keys associated with addresses, like DNS information.
|
||||
// This contract is primarily required to store the address of the Certifier contract.
|
||||
Registrar *common.Address `json:"registrar"`
|
||||
|
||||
// See https://github.com/gnosischain/specs/blob/master/execution/withdrawals.md
|
||||
WithdrawalContractAddress *common.Address `json:"withdrawalContractAddress"`
|
||||
|
||||
RewriteBytecode map[uint64]map[common.Address]hexutility.Bytes `json:"rewriteBytecode"`
|
||||
}
|
||||
|
||||
// String implements the stringer interface, returning the consensus engine details.
|
||||
func (c *AuRaConfig) String() string {
|
||||
return "aura"
|
||||
}
|
@ -401,18 +401,6 @@ func (c *CliqueConfig) String() string {
|
||||
return "clique"
|
||||
}
|
||||
|
||||
// AuRaConfig is the consensus engine configs for proof-of-authority based sealing.
|
||||
type AuRaConfig struct {
|
||||
DBPath string
|
||||
InMemory bool
|
||||
Etherbase common.Address // same as miner etherbase
|
||||
}
|
||||
|
||||
// String implements the stringer interface, returning the consensus engine details.
|
||||
func (c *AuRaConfig) String() string {
|
||||
return "aura"
|
||||
}
|
||||
|
||||
// BorConfig is the consensus engine configs for Matic bor based sealing.
|
||||
type BorConfig struct {
|
||||
Period map[string]uint64 `json:"period"` // Number of seconds between blocks to enforce
|
||||
|
Loading…
Reference in New Issue
Block a user