mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-20 08:31:11 +00:00
b8036fcb0f
* fix * ready
78 lines
3.1 KiB
Go
78 lines
3.1 KiB
Go
// Package params defines important constants that are essential to the beacon chain.
|
||
package params
|
||
|
||
import (
|
||
"math/big"
|
||
"time"
|
||
)
|
||
|
||
var env = "default"
|
||
|
||
// Config contains configs for node to participate in beacon chain.
|
||
type Config struct {
|
||
ShardCount int // ShardCount is a fixed number.
|
||
DefaultBalance *big.Int // DefaultBalance of a validator in wei.
|
||
MaxValidators int // MaxValidators in the protocol.
|
||
Cofactor int // Cofactor is used cutoff algorithm to select slot and shard cutoffs.
|
||
BootstrappedValidatorsCount int // BootstrappedValidatorsCount is the number of validators we seed the first crystallized state.
|
||
EtherDenomination int // EtherDenomination is the denomination of ether in wei.
|
||
CycleLength uint64 // CycleLength is the beacon chain cycle length in slots.
|
||
SlotDuration uint64 // SlotDuration in seconds.
|
||
MinCommiteeSize uint64 // MinDynastyLength is the slots needed before dynasty transition happens.
|
||
DefaultEndDynasty uint64 // DefaultEndDynasty is the upper bound of dynasty. We use it to track queued and exited validators.
|
||
MinDynastyLength uint64 // MinCommiteeSize is the minimal number of validator needs to be in a committee.
|
||
BaseRewardQuotient uint64 // BaseRewardQuotient is used to calculate validator per-slot interest rate.
|
||
SqrtDropTime uint64 // SqrtDropTime is a constant to reflect time it takes to cut offline validators’ deposits by 39.4%.
|
||
GenesisTime time.Time // GenesisTime used by the protocol.
|
||
}
|
||
|
||
var defaultConfig = &Config{
|
||
GenesisTime: time.Date(2018, 9, 0, 0, 0, 0, 0, time.UTC),
|
||
CycleLength: uint64(64),
|
||
ShardCount: 1024,
|
||
DefaultBalance: new(big.Int).Div(big.NewInt(32), big.NewInt(int64(1e18))),
|
||
MaxValidators: 4194304,
|
||
SlotDuration: uint64(8),
|
||
Cofactor: 19,
|
||
MinCommiteeSize: uint64(128),
|
||
DefaultEndDynasty: uint64(999999999999999999),
|
||
BootstrappedValidatorsCount: 1000,
|
||
MinDynastyLength: uint64(256),
|
||
EtherDenomination: 1e18,
|
||
BaseRewardQuotient: uint64(32768),
|
||
SqrtDropTime: uint64(1048576),
|
||
}
|
||
|
||
var demoConfig = &Config{
|
||
GenesisTime: time.Now(),
|
||
CycleLength: uint64(5),
|
||
ShardCount: 3,
|
||
DefaultBalance: new(big.Int).Div(big.NewInt(32), big.NewInt(int64(1e18))),
|
||
MaxValidators: 10,
|
||
SlotDuration: uint64(8),
|
||
Cofactor: 19,
|
||
MinCommiteeSize: uint64(3),
|
||
DefaultEndDynasty: uint64(999999999999999999),
|
||
MinDynastyLength: uint64(256),
|
||
EtherDenomination: 1e18,
|
||
BaseRewardQuotient: uint64(32768),
|
||
SqrtDropTime: uint64(1048576),
|
||
}
|
||
|
||
// GetConfig retrieves beacon node config.
|
||
func GetConfig() *Config {
|
||
switch env {
|
||
case "default":
|
||
return defaultConfig
|
||
case "demo":
|
||
return demoConfig
|
||
default:
|
||
return defaultConfig
|
||
}
|
||
}
|
||
|
||
// SetEnv sets which config to use.
|
||
func SetEnv(e string) {
|
||
env = e
|
||
}
|