mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-02 16:27:37 +00:00
Change Eth2 Repository Names (#9425)
* eth2 repo name changes * rem sha * use consensus spec terminology and pin sha
This commit is contained in:
parent
9f36116c2f
commit
eac542a8ac
@ -2,7 +2,7 @@
|
||||
|
||||
[![Build status](https://badge.buildkite.com/b555891daf3614bae4284dcf365b2340cefc0089839526f096.svg?branch=master)](https://buildkite.com/prysmatic-labs/prysm)
|
||||
[![Go Report Card](https://goreportcard.com/badge/github.com/prysmaticlabs/prysm)](https://goreportcard.com/report/github.com/prysmaticlabs/prysm)
|
||||
[![ETH2.0_Spec_Version 1.0.0](https://img.shields.io/badge/ETH2.0%20Spec%20Version-v1.0.0-blue.svg)](https://github.com/ethereum/eth2.0-specs/tree/v1.0.0)
|
||||
[![ETH2.0_Spec_Version 1.0.0](https://img.shields.io/badge/ETH2.0%20Spec%20Version-v1.0.0-blue.svg)](https://github.com/ethereum/consensus-specs/tree/v1.0.0)
|
||||
[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/CTYGPUJ)
|
||||
|
||||
This is the core repository for Prysm, a [Golang](https://golang.org/) implementation of the [Ethereum Consensus](https://ethereum.org/en/eth2/) specification, developed by [Prysmatic Labs](https://prysmaticlabs.com). See the [Changelog](https://github.com/prysmaticlabs/prysm/releases) for details of the latest releases and upcoming breaking changes.
|
||||
|
22
WORKSPACE
22
WORKSPACE
@ -197,10 +197,10 @@ filegroup(
|
||||
url = "https://github.com/eth2-clients/slashing-protection-interchange-tests/archive/b8413ca42dc92308019d0d4db52c87e9e125c4e9.tar.gz",
|
||||
)
|
||||
|
||||
eth2_spec_version = "v1.1.0-beta.1"
|
||||
consensus_spec_version = "v1.1.0-beta.1"
|
||||
|
||||
http_archive(
|
||||
name = "eth2_spec_tests_general",
|
||||
name = "consensus_spec_tests_general",
|
||||
build_file_content = """
|
||||
filegroup(
|
||||
name = "test_data",
|
||||
@ -212,11 +212,11 @@ filegroup(
|
||||
)
|
||||
""",
|
||||
sha256 = "e9b4cc60a3e676c6b4a9348424e44cff1ebada603ffb31b0df600dbd70e7fbf6",
|
||||
url = "https://github.com/ethereum/eth2.0-spec-tests/releases/download/%s/general.tar.gz" % eth2_spec_version,
|
||||
url = "https://github.com/ethereum/consensus-spec-tests/releases/download/%s/general.tar.gz" % consensus_spec_version,
|
||||
)
|
||||
|
||||
http_archive(
|
||||
name = "eth2_spec_tests_minimal",
|
||||
name = "consensus_spec_tests_minimal",
|
||||
build_file_content = """
|
||||
filegroup(
|
||||
name = "test_data",
|
||||
@ -228,11 +228,11 @@ filegroup(
|
||||
)
|
||||
""",
|
||||
sha256 = "cf82dc729ffe7b924f852e57d1973e1a6377c5b52acc903c953277fa9b4e6de8",
|
||||
url = "https://github.com/ethereum/eth2.0-spec-tests/releases/download/%s/minimal.tar.gz" % eth2_spec_version,
|
||||
url = "https://github.com/ethereum/consensus-spec-tests/releases/download/%s/minimal.tar.gz" % consensus_spec_version,
|
||||
)
|
||||
|
||||
http_archive(
|
||||
name = "eth2_spec_tests_mainnet",
|
||||
name = "consensus_spec_tests_mainnet",
|
||||
build_file_content = """
|
||||
filegroup(
|
||||
name = "test_data",
|
||||
@ -244,11 +244,11 @@ filegroup(
|
||||
)
|
||||
""",
|
||||
sha256 = "6c6792375b81858037014e282d28a64b0cf12e12daf16054265c85403b8b329f",
|
||||
url = "https://github.com/ethereum/eth2.0-spec-tests/releases/download/%s/mainnet.tar.gz" % eth2_spec_version,
|
||||
url = "https://github.com/ethereum/consensus-spec-tests/releases/download/%s/mainnet.tar.gz" % consensus_spec_version,
|
||||
)
|
||||
|
||||
http_archive(
|
||||
name = "eth2_spec",
|
||||
name = "consensus_spec",
|
||||
build_file_content = """
|
||||
filegroup(
|
||||
name = "spec_data",
|
||||
@ -258,9 +258,9 @@ filegroup(
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
""",
|
||||
sha256 = "16094dad1bab4e8ab3adb60c10e311cd1e294cd7bbf5a89505f24bebd3d0e513",
|
||||
strip_prefix = "eth2.0-specs-" + eth2_spec_version[1:],
|
||||
url = "https://github.com/ethereum/eth2.0-specs/archive/refs/tags/%s.tar.gz" % eth2_spec_version,
|
||||
sha256 = "6a039696cefe9c1a35f677d118880afa71bbd487f75110a943618872ccdde170",
|
||||
strip_prefix = "consensus-specs-" + consensus_spec_version[1:],
|
||||
url = "https://github.com/ethereum/consensus-specs/archive/refs/tags/%s.tar.gz" % consensus_spec_version,
|
||||
)
|
||||
|
||||
http_archive(
|
||||
|
@ -6,4 +6,4 @@ You can also read our main [README](https://github.com/prysmaticlabs/prysm/blob/
|
||||
|
||||
[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/CTYGPUJ)
|
||||
|
||||
Also, read the official beacon chain [specification](https://github.com/ethereum/eth2.0-specs/blob/master/specs/phase0/beacon-chain.md), this design spec serves as a source of truth for the beacon chain implementation we follow at Prysmatic Labs.
|
||||
Also, read the official beacon chain [specification](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/beacon-chain.md), this design spec serves as a source of truth for the beacon chain implementation we follow at Prysmatic Labs.
|
||||
|
@ -138,7 +138,7 @@ func (s *Service) processAttestations(ctx context.Context) {
|
||||
for _, a := range atts {
|
||||
// Based on the spec, don't process the attestation until the subsequent slot.
|
||||
// This delays consideration in the fork choice until their slot is in the past.
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/dev/specs/phase0/fork-choice.md#validate_on_attestation
|
||||
// https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/fork-choice.md#validate_on_attestation
|
||||
nextSlot := a.Data.Slot + 1
|
||||
if err := helpers.VerifySlotTime(uint64(s.genesisTime.Unix()), nextSlot, params.BeaconNetworkConfig().MaximumGossipClockDisparity); err != nil {
|
||||
continue
|
||||
|
@ -11,7 +11,7 @@ import (
|
||||
)
|
||||
|
||||
// VerifyWeakSubjectivityRoot verifies the weak subjectivity root in the service struct.
|
||||
// Reference design: https://github.com/ethereum/eth2.0-specs/blob/master/specs/phase0/weak-subjectivity.md#weak-subjectivity-sync-procedure
|
||||
// Reference design: https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/weak-subjectivity.md#weak-subjectivity-sync-procedure
|
||||
func (s *Service) VerifyWeakSubjectivityRoot(ctx context.Context) error {
|
||||
// TODO(7342): Remove the following to fully use weak subjectivity in production.
|
||||
if s.cfg.WeakSubjectivityCheckpt == nil || len(s.cfg.WeakSubjectivityCheckpt.Root) == 0 || s.cfg.WeakSubjectivityCheckpt.Epoch == 0 {
|
||||
|
2
beacon-chain/cache/committee.go
vendored
2
beacon-chain/cache/committee.go
vendored
@ -163,7 +163,7 @@ func startEndIndices(c *Committees, index uint64) (uint64, uint64) {
|
||||
// Using seed as source for key to handle reorgs in the same epoch.
|
||||
// The seed is derived from state's array of randao mixes and epoch value
|
||||
// hashed together. This avoids collisions on different validator set. Spec definition:
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/v0.9.3/specs/core/0_beacon-chain.md#get_seed
|
||||
// https://github.com/ethereum/consensus-specs/blob/v0.9.3/specs/core/0_beacon-chain.md#get_seed
|
||||
func key(seed [32]byte) string {
|
||||
return string(seed[:])
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ import (
|
||||
// mix = get_randao_mix(state, Epoch(epoch + EPOCHS_PER_HISTORICAL_VECTOR - MIN_SEED_LOOKAHEAD - 1)) # Avoid underflow
|
||||
// return hash(domain_type + uint_to_bytes(epoch) + mix)
|
||||
func Seed(state state.ReadOnlyBeaconState, epoch types.Epoch, domain [bls.DomainByteLength]byte) ([32]byte, error) {
|
||||
// See https://github.com/ethereum/eth2.0-specs/pull/1296 for
|
||||
// See https://github.com/ethereum/consensus-specs/pull/1296 for
|
||||
// rationale on why offset has to look down by 1.
|
||||
lookAheadEpoch := epoch + params.BeaconConfig().EpochsPerHistoricalVector -
|
||||
params.BeaconConfig().MinSeedLookahead - 1
|
||||
|
@ -18,7 +18,7 @@ import (
|
||||
// ComputeWeakSubjectivityPeriod returns weak subjectivity period for the active validator count and finalized epoch.
|
||||
//
|
||||
// Reference spec implementation:
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/master/specs/phase0/weak-subjectivity.md#calculating-the-weak-subjectivity-period
|
||||
// https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/weak-subjectivity.md#calculating-the-weak-subjectivity-period
|
||||
//
|
||||
// def compute_weak_subjectivity_period(state: BeaconState) -> uint64:
|
||||
// """
|
||||
@ -107,7 +107,7 @@ func ComputeWeakSubjectivityPeriod(st state.ReadOnlyBeaconState) (types.Epoch, e
|
||||
// at a given epoch matches that of the checkpoint.
|
||||
//
|
||||
// Reference implementation:
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/master/specs/phase0/weak-subjectivity.md#checking-for-stale-weak-subjectivity-checkpoint
|
||||
// https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/weak-subjectivity.md#checking-for-stale-weak-subjectivity-checkpoint
|
||||
//
|
||||
// def is_within_weak_subjectivity_period(store: Store, ws_state: BeaconState, ws_checkpoint: Checkpoint) -> bool:
|
||||
// # Clients may choose to validate the input state against the input Weak Subjectivity Checkpoint
|
||||
|
@ -22,7 +22,7 @@ func TestWeakSubjectivity_ComputeWeakSubjectivityPeriod(t *testing.T) {
|
||||
want types.Epoch
|
||||
}{
|
||||
// Asserting that we get the same numbers as defined in the reference table:
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/master/specs/phase0/weak-subjectivity.md#calculating-the-weak-subjectivity-period
|
||||
// https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/weak-subjectivity.md#calculating-the-weak-subjectivity-period
|
||||
{valCount: 32768, avgBalance: 28, want: 504},
|
||||
{valCount: 65536, avgBalance: 28, want: 752},
|
||||
{valCount: 131072, avgBalance: 28, want: 1248},
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
Package p2p implements the Ethereum consensus networking specification.
|
||||
|
||||
Canonical spec reference: https://github.com/ethereum/eth2.0-specs/blob/dev/specs/phase0/p2p-interface.md
|
||||
Canonical spec reference: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md
|
||||
|
||||
Prysm specific implementation design docs
|
||||
- Networking Design Doc: https://docs.google.com/document/d/1VyhobQRkEjEkEPxmmdWvaHfKWn0j6dEae_wLZlrFtfU/view
|
||||
|
@ -11,7 +11,7 @@ import (
|
||||
"github.com/prysmaticlabs/prysm/shared/gateway"
|
||||
)
|
||||
|
||||
// https://ethereum.github.io/eth2.0-APIs/#/Beacon/submitPoolAttestations expects posting a top-level array.
|
||||
// https://ethereum.github.io/beacon-apis/#/Beacon/submitPoolAttestations expects posting a top-level array.
|
||||
// We make it more proto-friendly by wrapping it in a struct with a 'data' field.
|
||||
func wrapAttestationsArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req *http.Request) gateway.ErrorJson {
|
||||
if _, ok := endpoint.PostRequest.(*submitAttestationRequestJson); ok {
|
||||
@ -29,7 +29,7 @@ func wrapAttestationsArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req
|
||||
return nil
|
||||
}
|
||||
|
||||
// https://ethereum.github.io/eth2.0-APIs/#/Validator/getAttesterDuties expects posting a top-level array.
|
||||
// https://ethereum.github.io/beacon-apis/#/Validator/getAttesterDuties expects posting a top-level array.
|
||||
// We make it more proto-friendly by wrapping it in a struct with an 'index' field.
|
||||
func wrapValidatorIndicesArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req *http.Request) gateway.ErrorJson {
|
||||
if _, ok := endpoint.PostRequest.(*attesterDutiesRequestJson); ok {
|
||||
@ -47,7 +47,7 @@ func wrapValidatorIndicesArray(endpoint gateway.Endpoint, _ http.ResponseWriter,
|
||||
return nil
|
||||
}
|
||||
|
||||
// https://ethereum.github.io/eth2.0-APIs/#/Validator/publishAggregateAndProofs expects posting a top-level array.
|
||||
// https://ethereum.github.io/beacon-apis/#/Validator/publishAggregateAndProofs expects posting a top-level array.
|
||||
// We make it more proto-friendly by wrapping it in a struct with a 'data' field.
|
||||
func wrapSignedAggregateAndProofArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req *http.Request) gateway.ErrorJson {
|
||||
if _, ok := endpoint.PostRequest.(*submitAggregateAndProofsRequestJson); ok {
|
||||
@ -65,7 +65,7 @@ func wrapSignedAggregateAndProofArray(endpoint gateway.Endpoint, _ http.Response
|
||||
return nil
|
||||
}
|
||||
|
||||
// https://ethereum.github.io/eth2.0-APIs/#/Validator/prepareBeaconCommitteeSubnet expects posting a top-level array.
|
||||
// https://ethereum.github.io/beacon-apis/#/Validator/prepareBeaconCommitteeSubnet expects posting a top-level array.
|
||||
// We make it more proto-friendly by wrapping it in a struct with a 'data' field.
|
||||
func wrapBeaconCommitteeSubscriptionsArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req *http.Request) gateway.ErrorJson {
|
||||
if _, ok := endpoint.PostRequest.(*submitBeaconCommitteeSubscriptionsRequestJson); ok {
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Package beacon defines a gRPC beacon service implementation,
|
||||
// following the official API standards https://ethereum.github.io/eth2.0-APIs/#/.
|
||||
// following the official API standards https://ethereum.github.io/beacon-apis/#/.
|
||||
// This package includes the beacon and config endpoints.
|
||||
package beacon
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Package debug defines a gRPC beacon service implementation,
|
||||
// following the official API standards https://ethereum.github.io/eth2.0-APIs/#/.
|
||||
// following the official API standards https://ethereum.github.io/beacon-apis/#/.
|
||||
// This package includes the beacon and config endpoints.
|
||||
package debug
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Package events defines a gRPC events service implementation,
|
||||
// following the official API standards https://ethereum.github.io/eth2.0-APIs/#/.
|
||||
// following the official API standards https://ethereum.github.io/beacon-apis/#/.
|
||||
// This package includes the events endpoint.
|
||||
package events
|
||||
|
||||
|
@ -385,7 +385,7 @@ func (bs *Server) collectReceivedAttestations(ctx context.Context) {
|
||||
// that it was included in a block. The attestation may have expired.
|
||||
// Refer to the ethereum consensus specification for more details on how
|
||||
// attestations are processed and when they are no longer valid.
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#attestations
|
||||
// https://github.com/ethereum/consensus-specs/blob/dev/specs/core/0_beacon-chain.md#attestations
|
||||
func (bs *Server) AttestationPool(
|
||||
_ context.Context, req *ethpb.AttestationPoolRequest,
|
||||
) (*ethpb.AttestationPoolResponse, error) {
|
||||
|
@ -265,7 +265,7 @@ func (vs *Server) inRangeVotes(ctx context.Context,
|
||||
if err != nil {
|
||||
log.Warningf("Could not fetch eth1data height for received eth1data vote: %v", err)
|
||||
}
|
||||
// Make sure we don't "undo deposit progress". See https://github.com/ethereum/eth2.0-specs/pull/1836
|
||||
// Make sure we don't "undo deposit progress". See https://github.com/ethereum/consensus-specs/pull/1836
|
||||
if eth1Data.DepositCount < currentETH1Data.DepositCount {
|
||||
continue
|
||||
}
|
||||
@ -570,7 +570,7 @@ func (vs *Server) defaultEth1DataResponse(ctx context.Context, currentHeight *bi
|
||||
if depositsTillHeight == 0 {
|
||||
return vs.ChainStartFetcher.ChainStartEth1Data(), nil
|
||||
}
|
||||
// // Make sure we don't "undo deposit progress". See https://github.com/ethereum/eth2.0-specs/pull/1836
|
||||
// // Make sure we don't "undo deposit progress". See https://github.com/ethereum/consensus-specs/pull/1836
|
||||
currentETH1Data := vs.HeadFetcher.HeadETH1Data()
|
||||
if depositsTillHeight < currentETH1Data.DepositCount {
|
||||
return currentETH1Data, nil
|
||||
|
@ -71,7 +71,7 @@ var (
|
||||
Value: 3500,
|
||||
}
|
||||
// EthApiPort specifies the port which runs the official Ethereum REST API.
|
||||
// Serves JSON values conforming to the specification: https://ethereum.github.io/eth2.0-APIs/
|
||||
// Serves JSON values conforming to the specification: https://ethereum.github.io/beacon-apis/
|
||||
EthApiPort = &cli.IntFlag{
|
||||
Name: "eth-api-port",
|
||||
Usage: "The port which exposes a REST API conforming to the official Ethereum API specification.",
|
||||
|
@ -1,6 +1,6 @@
|
||||
## Prysm Internal Validator Deposit Contract
|
||||
|
||||
**NOTE: THIS IS NOT THE OFFICIAL ETHEREUM VALIDATOR DEPOSIT CONTRACT. THE OFFICIAL CONTRACT CAN ONLY BE FOUND [HERE](https://github.com/ethereum/eth2.0-specs/blob/e4a9c5fa29def20c4264cd860868f131d6f40e72/solidity_deposit_contract/deposit_contract.sol). THE ONLY DEPOSIT CONTRACT ON MAINNET HAS ADDRESS 0x00000000219ab540356cbb839cbe05303d7705fa. DO NOT USE THE CONTRACT IN THIS FOLDER OUTSIDE OF DEVELOPMENT**
|
||||
**NOTE: THIS IS NOT THE OFFICIAL ETHEREUM VALIDATOR DEPOSIT CONTRACT. THE OFFICIAL CONTRACT CAN ONLY BE FOUND [HERE](https://github.com/ethereum/consensus-specs/blob/e4a9c5fa29def20c4264cd860868f131d6f40e72/solidity_deposit_contract/deposit_contract.sol). THE ONLY DEPOSIT CONTRACT ON MAINNET HAS ADDRESS 0x00000000219ab540356cbb839cbe05303d7705fa. DO NOT USE THE CONTRACT IN THIS FOLDER OUTSIDE OF DEVELOPMENT**
|
||||
|
||||
## How to execute tests
|
||||
|
||||
|
@ -76,7 +76,7 @@ def deposit(pubkey: bytes[PUBKEY_LENGTH],
|
||||
deposit_amount: uint256 = msg.value / as_wei_value(1, "gwei")
|
||||
assert deposit_amount >= MIN_DEPOSIT_AMOUNT
|
||||
|
||||
# Length checks to facilitate formal verification (see https://github.com/ethereum/eth2.0-specs/pull/1362/files#r320361859)
|
||||
# Length checks to facilitate formal verification (see https://github.com/ethereum/consensus-specs/pull/1362/files#r320361859)
|
||||
assert len(pubkey) == PUBKEY_LENGTH
|
||||
assert len(withdrawal_credentials) == WITHDRAWAL_CREDENTIALS_LENGTH
|
||||
assert len(signature) == SIGNATURE_LENGTH
|
||||
|
@ -36,7 +36,7 @@ option php_namespace = "Ethereum\\Eth\\Service";
|
||||
// The config API endpoints can be used to query the beacon chain state and information. Such as spec, current fork,
|
||||
// blocks, and the validator spec.
|
||||
//
|
||||
// This service is defined in the upstream Ethereum consensus APIs repository (eth2.0-APIs/apis/).
|
||||
// This service is defined in the upstream Ethereum consensus APIs repository (beacon-apis/apis/).
|
||||
service BeaconChain {
|
||||
// Beacon state API related endpoints.
|
||||
|
||||
|
@ -34,7 +34,7 @@ option php_namespace = "Ethereum\\Eth\\Service";
|
||||
//
|
||||
// The beacon chain debug API is a set of endpoints to debug chain and shouldn't be exposed publicly.
|
||||
//
|
||||
// This service is defined in the upstream Ethereum consensus APIs repository (eth2.0-APIs/apis/debug).
|
||||
// This service is defined in the upstream Ethereum consensus APIs repository (beacon-apis/apis/debug).
|
||||
service BeaconDebug {
|
||||
// GetBeaconState returns full BeaconState object for given stateId.
|
||||
rpc GetBeaconState(v1.StateRequest) returns (v1.BeaconStateResponse) {
|
||||
|
@ -30,7 +30,7 @@ option php_namespace = "Ethereum\\Eth\\Service";
|
||||
|
||||
// Events API
|
||||
//
|
||||
// This service is defined in the upstream Ethereum consensus APIs repository (eth2.0-APIs/apis/debug).
|
||||
// This service is defined in the upstream Ethereum consensus APIs repository (beacon-apis/apis/debug).
|
||||
service Events {
|
||||
rpc StreamEvents(v1.StreamEventsRequest) returns (stream gateway.EventSource) {
|
||||
option (google.api.http) = {
|
||||
|
@ -33,7 +33,7 @@ option php_namespace = "Ethereum\\Eth\\Service";
|
||||
//
|
||||
// The beacon chain validator API is a set of endpoints to be used by validators for performing their roles.
|
||||
//
|
||||
// This service is defined in the upstream Ethereum consensus APIs repository (eth2.0-APIs/apis/validator).
|
||||
// This service is defined in the upstream Ethereum consensus APIs repository (beacon-apis/apis/validator).
|
||||
service BeaconValidator {
|
||||
// GetAttesterDuties requests the beacon node to provide a set of attestation duties, which should be performed
|
||||
// by validators, for a particular epoch.
|
||||
|
@ -66,7 +66,7 @@ message BeaconBlockBody {
|
||||
bytes graffiti = 3 [(ethereum.eth.ext.ssz_size) = "32"];
|
||||
|
||||
// Block operations
|
||||
// Refer to spec constants at https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#max-operations-per-block
|
||||
// Refer to spec constants at https://github.com/ethereum/consensus-specs/blob/dev/specs/core/0_beacon-chain.md#max-operations-per-block
|
||||
|
||||
// At most MAX_PROPOSER_SLASHINGS.
|
||||
repeated ProposerSlashing proposer_slashings = 4 [(ethereum.eth.ext.ssz_max) = "16"];
|
||||
|
@ -62,13 +62,13 @@ message Validator {
|
||||
// Epoch when the validator was exited. This field is FAR_FUTURE_EPOCH if
|
||||
// the validator has not exited.
|
||||
// FAR_FUTURE_EPOCH is a constant defined by the official Ethereum Beacon Chain specification:
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
|
||||
// https://github.com/ethereum/consensus-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
|
||||
uint64 exit_epoch = 7 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/eth2-types.Epoch"];
|
||||
|
||||
// Epoch when the validator is eligible to withdraw their funds. This field
|
||||
// is FAR_FUTURE_EPOCH if the validator has not exited.
|
||||
// FAR_FUTURE_EPOCH is a constant defined by the official Ethereum Beacon Chain specification:
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
|
||||
// https://github.com/ethereum/consensus-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
|
||||
uint64 withdrawable_epoch = 8 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/eth2-types.Epoch"];
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ message BeaconBlockBodyAltair {
|
||||
bytes graffiti = 3 [(ethereum.eth.ext.ssz_size) = "32"];
|
||||
|
||||
// Block operations
|
||||
// Refer to spec constants at https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#max-operations-per-block
|
||||
// Refer to spec constants at https://github.com/ethereum/consensus-specs/blob/dev/specs/core/0_beacon-chain.md#max-operations-per-block
|
||||
|
||||
// At most MAX_PROPOSER_SLASHINGS.
|
||||
repeated v1.ProposerSlashing proposer_slashings = 4 [(ethereum.eth.ext.ssz_max) = "16"];
|
||||
|
@ -92,7 +92,7 @@ message BeaconBlockBody {
|
||||
bytes graffiti = 3 [(ethereum.eth.ext.ssz_size) = "32"];
|
||||
|
||||
// Block operations
|
||||
// Refer to spec constants at https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#max-operations-per-block
|
||||
// Refer to spec constants at https://github.com/ethereum/consensus-specs/blob/dev/specs/core/0_beacon-chain.md#max-operations-per-block
|
||||
|
||||
// At most MAX_PROPOSER_SLASHINGS.
|
||||
repeated ProposerSlashing proposer_slashings = 4 [(ethereum.eth.ext.ssz_max) = "16"];
|
||||
@ -125,7 +125,7 @@ message BeaconBlockBodyAltair {
|
||||
bytes graffiti = 3 [(ethereum.eth.ext.ssz_size) = "32"];
|
||||
|
||||
// Block operations
|
||||
// Refer to spec constants at https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#max-operations-per-block
|
||||
// Refer to spec constants at https://github.com/ethereum/consensus-specs/blob/dev/specs/core/0_beacon-chain.md#max-operations-per-block
|
||||
|
||||
// At most MAX_PROPOSER_SLASHINGS.
|
||||
repeated ProposerSlashing proposer_slashings = 4 [(ethereum.eth.ext.ssz_max) = "16"];
|
||||
|
@ -84,7 +84,7 @@ service BeaconChain {
|
||||
// that it was included in a block. The attestation may have expired.
|
||||
// Refer to the Ethereum Beacon Chain specification for more details on how
|
||||
// attestations are processed and when they are no longer valid.
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#attestations
|
||||
// https://github.com/ethereum/consensus-specs/blob/dev/specs/core/0_beacon-chain.md#attestations
|
||||
rpc AttestationPool(AttestationPoolRequest) returns (AttestationPoolResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/eth/v1alpha1/beacon/attestations/pool"
|
||||
|
@ -55,7 +55,7 @@ message BeaconState {
|
||||
}
|
||||
|
||||
// The beacon state for Altair hard fork 1.
|
||||
// Reference: https://github.com/ethereum/eth2.0-specs/blob/dev/specs/altair/beacon-chain.md#beaconstate
|
||||
// Reference: https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/beacon-chain.md#beaconstate
|
||||
message BeaconStateAltair {
|
||||
// Versioning [1001-2000]
|
||||
uint64 genesis_time = 1001;
|
||||
|
@ -33,7 +33,7 @@ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
|
||||
description: "{{ index . "description" }}";
|
||||
};
|
||||
external_docs: {
|
||||
url: "https://github.com/ethereum/eth2.0-specs";
|
||||
url: "https://github.com/ethereum/consensus-specs";
|
||||
description: "Ethereum Consensus Specification on Github";
|
||||
};
|
||||
host: "api.prylabs.net",
|
||||
|
@ -59,6 +59,6 @@
|
||||
},
|
||||
"externalDocs": {
|
||||
"description": "Ethereum Consensus Specification on Github",
|
||||
"url": "https://github.com/ethereum/eth2.0-specs"
|
||||
"url": "https://github.com/ethereum/consensus-specs"
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
[![Build status](https://badge.buildkite.com/62be08099e9e228b165c2dba69c637eb9ca7a1ca95efd54b9f.svg?branch=master)](https://buildkite.com/prysmatic-labs/ethereum-apis)[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/KSA7rPr)[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/prysmaticlabs/geth-sharding?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)[![ETH2.0_Spec_Version 0.12.1](https://img.shields.io/badge/ETH2.0%20Spec%20Version-v0.12.1-blue.svg)](https://github.com/ethereum/eth2.0-specs/tree/v0.12.1)
|
||||
[![Build status](https://badge.buildkite.com/62be08099e9e228b165c2dba69c637eb9ca7a1ca95efd54b9f.svg?branch=master)](https://buildkite.com/prysmatic-labs/ethereum-apis)[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/KSA7rPr)[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/prysmaticlabs/geth-sharding?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)[![ETH2.0_Spec_Version 0.12.1](https://img.shields.io/badge/ETH2.0%20Spec%20Version-v0.12.1-blue.svg)](https://github.com/ethereum/consensus-specs/tree/v0.12.1)
|
||||
|
||||
This swagger site hosts the service interface definitions for the Ethereum Serenity JSON API.
|
||||
|
||||
|
@ -609,13 +609,13 @@ message Validator {
|
||||
// Epoch when the validator was exited. This field is FAR_FUTURE_EPOCH if
|
||||
// the validator has not exited.
|
||||
// FAR_FUTURE_EPOCH is a constant defined by the official Ethereum Beacon Chain specification:
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
|
||||
// https://github.com/ethereum/consensus-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
|
||||
uint64 exit_epoch = 7 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/eth2-types.Epoch"];
|
||||
|
||||
// Epoch when the validator is eligible to withdraw their funds. This field
|
||||
// is FAR_FUTURE_EPOCH if the validator has not exited.
|
||||
// FAR_FUTURE_EPOCH is a constant defined by the official Ethereum Beacon Chain specification:
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
|
||||
// https://github.com/ethereum/consensus-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
|
||||
uint64 withdrawable_epoch = 8 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/eth2-types.Epoch"];
|
||||
}
|
||||
|
||||
|
@ -46,8 +46,8 @@ go_test(
|
||||
"tags_test.go",
|
||||
],
|
||||
data = [
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
embed = [":go_default_library"],
|
||||
tags = ["spectest"],
|
||||
|
@ -26,7 +26,7 @@ import (
|
||||
// - Let signature be the result of bls_sign of the signing_root(deposit_data) with domain=compute_domain(DOMAIN_DEPOSIT). (Deposits are valid regardless of fork version, compute_domain will default to zeroes there).
|
||||
// - Send a transaction on the Ethereum 1.0 chain to DEPOSIT_CONTRACT_ADDRESS executing `deposit(pubkey: bytes[48], withdrawal_credentials: bytes[32], signature: bytes[96])` along with a deposit of amount Gwei.
|
||||
//
|
||||
// See: https://github.com/ethereum/eth2.0-specs/blob/master/specs/validator/0_beacon-chain-validator.md#submit-deposit
|
||||
// See: https://github.com/ethereum/consensus-specs/blob/master/specs/validator/0_beacon-chain-validator.md#submit-deposit
|
||||
func DepositInput(depositKey, withdrawalKey bls.SecretKey, amountInGwei uint64) (*ethpb.Deposit_Data, [32]byte, error) {
|
||||
depositMessage := ðpb.DepositMessage{
|
||||
PublicKey: depositKey.PublicKey().Marshal(),
|
||||
|
@ -24,7 +24,7 @@ var sha256Pool = sync.Pool{New: func() interface{} {
|
||||
}}
|
||||
|
||||
// Hash defines a function that returns the sha256 checksum of the data passed in.
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/v0.9.3/specs/core/0_beacon-chain.md#hash
|
||||
// https://github.com/ethereum/consensus-specs/blob/v0.9.3/specs/core/0_beacon-chain.md#hash
|
||||
func Hash(data []byte) [32]byte {
|
||||
h, ok := sha256Pool.Get().(hash.Hash)
|
||||
if !ok {
|
||||
|
@ -39,9 +39,9 @@ go_test(
|
||||
"loader_test.go",
|
||||
],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec//:spec_data",
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec//:spec_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
embed = [":go_default_library"],
|
||||
gotags = ["develop"],
|
||||
|
@ -14,7 +14,7 @@ import (
|
||||
)
|
||||
|
||||
func TestLoadConfigFileMainnet(t *testing.T) {
|
||||
// See https://media.githubusercontent.com/media/ethereum/eth2.0-spec-tests/master/tests/minimal/config/phase0.yaml
|
||||
// See https://media.githubusercontent.com/media/ethereum/consensus-spec-tests/master/tests/minimal/config/phase0.yaml
|
||||
assertVals := func(name string, fields []string, c1, c2 *BeaconChainConfig) {
|
||||
// Misc params.
|
||||
assert.Equal(t, c1.MaxCommitteesPerSlot, c2.MaxCommitteesPerSlot, "%s: MaxCommitteesPerSlot", name)
|
||||
@ -231,7 +231,7 @@ func Test_replaceHexStringWithYAMLFormat(t *testing.T) {
|
||||
// configFilePath sets the proper config and returns the relevant
|
||||
// config file path from eth2-spec-tests directory.
|
||||
func configFilePath(t *testing.T, config string) string {
|
||||
filepath, err := bazel.Runfile("external/eth2_spec")
|
||||
filepath, err := bazel.Runfile("external/consensus_spec")
|
||||
require.NoError(t, err)
|
||||
configFilePath := path.Join(filepath, "configs", config+".yaml")
|
||||
return configFilePath
|
||||
@ -240,7 +240,7 @@ func configFilePath(t *testing.T, config string) string {
|
||||
// presetsFilePath sets the proper preset and returns the relevant
|
||||
// preset file path from eth2-spec-tests directory.
|
||||
func presetsFilePath(t *testing.T, config string) string {
|
||||
filepath, err := bazel.Runfile("external/eth2_spec")
|
||||
filepath, err := bazel.Runfile("external/consensus_spec")
|
||||
require.NoError(t, err)
|
||||
configFilePath := path.Join(filepath, "presets", config, "phase0.yaml")
|
||||
return configFilePath
|
||||
|
@ -121,7 +121,7 @@ var mainnetBeaconConfig = &BeaconChainConfig{
|
||||
// While eth1 mainnet block times are closer to 13s, we must conform with other clients in
|
||||
// order to vote on the correct eth1 blocks.
|
||||
//
|
||||
// Additional context: https://github.com/ethereum/eth2.0-specs/issues/2132
|
||||
// Additional context: https://github.com/ethereum/consensus-specs/issues/2132
|
||||
// Bug prompting this change: https://github.com/prysmaticlabs/prysm/issues/7856
|
||||
// Future optimization: https://github.com/prysmaticlabs/prysm/issues/7739
|
||||
SecondsPerETH1Block: 14,
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Spec Tests
|
||||
|
||||
Spec testing vectors: https://github.com/ethereum/eth2.0-spec-tests
|
||||
Spec testing vectors: https://github.com/ethereum/consensus-spec-tests
|
||||
|
||||
To run all `mainnet` spec tests:
|
||||
|
||||
|
@ -26,7 +26,7 @@ go_test(
|
||||
"verify_test.go",
|
||||
],
|
||||
data = [
|
||||
"@eth2_spec_tests_general//:test_data",
|
||||
"@consensus_spec_tests_general//:test_data",
|
||||
],
|
||||
embed = [":go_default_library"],
|
||||
tags = ["spectest"],
|
||||
|
@ -1,3 +1,3 @@
|
||||
// Package bls includes tests to ensure conformity with the Ethereum BLS cryptography specification.
|
||||
// See https://github.com/ethereum/eth2.0-spec-tests/tree/master/tests/general/phase0/bls for details.
|
||||
// See https://github.com/ethereum/consensus-spec-tests/tree/master/tests/general/phase0/bls for details.
|
||||
package bls
|
||||
|
@ -44,7 +44,7 @@ func testFastAggregateVerify(t *testing.T) {
|
||||
}
|
||||
|
||||
msg := test.Input.Message
|
||||
// TODO(#7632): Remove when https://github.com/ethereum/eth2.0-spec-tests/issues/22 is resolved.
|
||||
// TODO(#7632): Remove when https://github.com/ethereum/consensus-spec-tests/issues/22 is resolved.
|
||||
if msg == "" {
|
||||
msg = test.Input.Messages
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ type FastAggregateVerifyTest struct {
|
||||
Input struct {
|
||||
Pubkeys []string `json:"pubkeys"`
|
||||
Message string `json:"message"`
|
||||
// TODO(#7632): Remove when https://github.com/ethereum/eth2.0-spec-tests/issues/22 is resolved.
|
||||
// TODO(#7632): Remove when https://github.com/ethereum/consensus-spec-tests/issues/22 is resolved.
|
||||
Messages string `json:"messages"`
|
||||
Signature string `json:"signature"`
|
||||
} `json:"input"`
|
||||
|
@ -13,7 +13,7 @@ go_test(
|
||||
"voluntary_exit_test.go",
|
||||
],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
],
|
||||
shard_count = 4,
|
||||
tags = ["spectest"],
|
||||
|
@ -17,7 +17,7 @@ go_test(
|
||||
"slashings_test.go",
|
||||
],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
],
|
||||
shard_count = 4,
|
||||
tags = ["spectest"],
|
||||
|
@ -5,7 +5,7 @@ go_test(
|
||||
size = "small",
|
||||
srcs = ["finality_test.go"],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
],
|
||||
shard_count = 4,
|
||||
tags = ["spectest"],
|
||||
|
@ -12,7 +12,7 @@ go_test(
|
||||
"voluntary_exit_test.go",
|
||||
],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
],
|
||||
shard_count = 4,
|
||||
tags = ["spectest"],
|
||||
|
@ -5,7 +5,7 @@ go_test(
|
||||
size = "small",
|
||||
srcs = ["rewards_test.go"],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
],
|
||||
tags = ["spectest"],
|
||||
deps = ["//spectest/shared/phase0/rewards:go_default_library"],
|
||||
|
@ -8,7 +8,7 @@ go_test(
|
||||
"slots_test.go",
|
||||
],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
],
|
||||
tags = ["spectest"],
|
||||
deps = ["//spectest/shared/phase0/sanity:go_default_library"],
|
||||
|
@ -5,7 +5,7 @@ go_test(
|
||||
size = "small",
|
||||
srcs = ["shuffle_test.go"],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
],
|
||||
tags = ["spectest"],
|
||||
deps = ["//spectest/shared/phase0/shuffling/core/shuffle:go_default_library"],
|
||||
|
@ -5,7 +5,7 @@ go_test(
|
||||
size = "small",
|
||||
srcs = ["ssz_static_test.go"],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_mainnet//:test_data",
|
||||
"@consensus_spec_tests_mainnet//:test_data",
|
||||
],
|
||||
tags = ["spectest"],
|
||||
deps = ["//spectest/shared/phase0/ssz_static:go_default_library"],
|
||||
|
@ -13,7 +13,7 @@ go_test(
|
||||
"voluntary_exit_test.go",
|
||||
],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
eth_network = "minimal",
|
||||
tags = [
|
||||
|
@ -17,7 +17,7 @@ go_test(
|
||||
"slashings_test.go",
|
||||
],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
eth_network = "minimal",
|
||||
tags = [
|
||||
|
@ -5,7 +5,7 @@ go_test(
|
||||
size = "small",
|
||||
srcs = ["finality_test.go"],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
eth_network = "minimal",
|
||||
shard_count = 4,
|
||||
|
@ -12,7 +12,7 @@ go_test(
|
||||
"voluntary_exit_test.go",
|
||||
],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
eth_network = "minimal",
|
||||
tags = [
|
||||
|
@ -5,7 +5,7 @@ go_test(
|
||||
size = "small",
|
||||
srcs = ["rewards_test.go"],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
eth_network = "minimal",
|
||||
tags = [
|
||||
|
@ -8,7 +8,7 @@ go_test(
|
||||
"slots_test.go",
|
||||
],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
eth_network = "minimal",
|
||||
tags = [
|
||||
|
@ -5,7 +5,7 @@ go_test(
|
||||
size = "small",
|
||||
srcs = ["shuffle_test.go"],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
eth_network = "minimal",
|
||||
tags = [
|
||||
|
@ -5,7 +5,7 @@ go_test(
|
||||
size = "small",
|
||||
srcs = ["ssz_static_test.go"],
|
||||
data = glob(["*.yaml"]) + [
|
||||
"@eth2_spec_tests_minimal//:test_data",
|
||||
"@consensus_spec_tests_minimal//:test_data",
|
||||
],
|
||||
eth_network = "minimal",
|
||||
tags = [
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Specs checker tool
|
||||
|
||||
This simple tool helps downloading and parsing [Ethereum specs](https://github.com/ethereum/eth2.0-specs/tree/dev/specs),
|
||||
This simple tool helps downloading and parsing [Ethereum specs](https://github.com/ethereum/consensus-specs/tree/dev/specs),
|
||||
to be later used for making sure that our reference comments match specs definitions precisely.
|
||||
|
||||
### Updating the reference specs
|
||||
|
@ -12,7 +12,7 @@ import (
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
const baseUrl = "https://raw.githubusercontent.com/ethereum/eth2.0-specs/dev"
|
||||
const baseUrl = "https://raw.githubusercontent.com/ethereum/consensus-specs/dev"
|
||||
|
||||
// Regex to find Python's code snippets in markdown.
|
||||
var reg2 = regexp.MustCompile(`(?msU)^\x60\x60\x60python\n+def\s(.*)^\x60\x60\x60`)
|
||||
|
@ -6,4 +6,4 @@ You can also read our main [README](https://github.com/prysmaticlabs/prysm/blob/
|
||||
|
||||
[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/CTYGPUJ)
|
||||
|
||||
To further understand the responsibilities of an Ethereum validator, we recommend reading the official specification [here](https://github.com/ethereum/eth2.0-specs/blob/master/specs/phase0/validator.md)
|
||||
To further understand the responsibilities of an Ethereum validator, we recommend reading the official specification [here](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/validator.md)
|
||||
|
@ -60,7 +60,7 @@ func (v *validator) SubmitAggregateAndProof(ctx context.Context, slot types.Slot
|
||||
|
||||
// As specified in spec, an aggregator should wait until two thirds of the way through slot
|
||||
// to broadcast the best aggregate to the global aggregate channel.
|
||||
// https://github.com/ethereum/eth2.0-specs/blob/v0.9.3/specs/validator/0_beacon-chain-validator.md#broadcast-aggregate
|
||||
// https://github.com/ethereum/consensus-specs/blob/v0.9.3/specs/validator/0_beacon-chain-validator.md#broadcast-aggregate
|
||||
v.waitToSlotTwoThirds(ctx, slot)
|
||||
|
||||
res, err := v.validatorClient.SubmitAggregateSelectionProof(ctx, ðpb.AggregateSelectionRequest{
|
||||
|
Loading…
Reference in New Issue
Block a user