mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 21:38:05 -05:00
* Fulu: Implement params. * KZG tests: Re-implement `getRandBlob` to avoid tests cyclical dependencies. Not ideal, but any better idea welcome. * Fulu testing util: Implement `GenerateCellsAndProofs`. * Create `RODataColumn`. * Implement `MerkleProofKZGCommitments`. * Export `leavesFromCommitments`. * Implement peerDAS core. * Add changelog. * Update beacon-chain/core/peerdas/das_core.go Co-authored-by: terence <terence@prysmaticlabs.com> * Fix Terence's comment: Use `IsNil`. * Fix Terence's comment: Avoid useless `filteredIndices`. * Fix Terence's comment: Simplify odd/even cases. * Fix Terence's comment: Use `IsNil`. * Spectests: Add Fulu networking * Fix Terence's comment: `CustodyGroups`: Stick to the spec by returning a (sorted) slice. * Fix Terence's comment: `CustodyGroups`: Handle correctly the `maxUint256` case. * Update beacon-chain/core/peerdas/das_core.go Co-authored-by: terence <terence@prysmaticlabs.com> * Fix Terence's comment: `ComputeColumnsForCustodyGroup`: Add test if `custodyGroup == numberOfCustodyGroup` * `CustodyGroups`: Test if `custodyGroupCount > numberOfCustodyGroup`. * `CustodyGroups`: Add a shortcut if all custody groups are needed. * `ComputeCystodyGroupForColumn`: Move from `p2p_interface.go` to `das_core.go`. * Fix Terence's comment: Fix `ComputeCustodyGroupForColumn`. * Fix Terence's comment: Remove `constructCellsAndProofs` function. * Fix Terence's comment: `ValidatorsCustodyRequirement`: Use effective balance instead of balance. * `MerkleProofKZGCommitments`: Add tests * Remove peer sampling. * `DataColumnSidecars`: Add missing tests. * Fix Jame's comment. * Fix James' comment. * Fix James' comment. * Fix James' coment. * Fix James' comment. --------- Co-authored-by: terence <terence@prysmaticlabs.com>
54 lines
1.9 KiB
Go
54 lines
1.9 KiB
Go
package params
|
|
|
|
import (
|
|
"github.com/OffchainLabs/prysm/v6/consensus-types/primitives"
|
|
"github.com/mohae/deepcopy"
|
|
)
|
|
|
|
// NetworkConfig defines the spec based network parameters.
|
|
type NetworkConfig struct {
|
|
// DiscoveryV5 Config
|
|
ETH2Key string // ETH2Key is the ENR key of the Ethereum consensus object.
|
|
AttSubnetKey string // AttSubnetKey is the ENR key of the subnet bitfield.
|
|
SyncCommsSubnetKey string // SyncCommsSubnetKey is the ENR key of the sync committee subnet bitfield.
|
|
CustodyGroupCountKey string // CustodyGroupsCountKey is the ENR key of the custody group count.
|
|
MinimumPeersInSubnetSearch uint64 // PeersInSubnetSearch is the required amount of peers that we need to be able to lookup in a subnet search.
|
|
|
|
// Chain Network Config
|
|
ContractDeploymentBlock uint64 // ContractDeploymentBlock is the eth1 block in which the deposit contract is deployed.
|
|
BootstrapNodes []string // BootstrapNodes are the addresses of the bootnodes.
|
|
}
|
|
|
|
var networkConfig = mainnetNetworkConfig
|
|
|
|
// BeaconNetworkConfig returns the current network config for
|
|
// the beacon chain.
|
|
func BeaconNetworkConfig() *NetworkConfig {
|
|
return networkConfig
|
|
}
|
|
|
|
// OverrideBeaconNetworkConfig will override the network
|
|
// config with the added argument.
|
|
func OverrideBeaconNetworkConfig(cfg *NetworkConfig) {
|
|
networkConfig = cfg.Copy()
|
|
}
|
|
|
|
// Copy returns Copy of the config object.
|
|
func (c *NetworkConfig) Copy() *NetworkConfig {
|
|
config, ok := deepcopy.Copy(*c).(NetworkConfig)
|
|
if !ok {
|
|
config = *networkConfig
|
|
}
|
|
return &config
|
|
}
|
|
|
|
// MaxRequestBlock determines the maximum number of blocks that can be requested in a single
|
|
// request for a given epoch. If the epoch is at or beyond config's `DenebForkEpoch`,
|
|
// a special limit defined for Deneb is used.
|
|
func MaxRequestBlock(e primitives.Epoch) uint64 {
|
|
if e >= BeaconConfig().DenebForkEpoch {
|
|
return BeaconConfig().MaxRequestBlocksDeneb
|
|
}
|
|
return BeaconConfig().MaxRequestBlocks
|
|
}
|