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)
|
[![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)
|
[![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)
|
[![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.
|
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",
|
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(
|
http_archive(
|
||||||
name = "eth2_spec_tests_general",
|
name = "consensus_spec_tests_general",
|
||||||
build_file_content = """
|
build_file_content = """
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "test_data",
|
name = "test_data",
|
||||||
@ -212,11 +212,11 @@ filegroup(
|
|||||||
)
|
)
|
||||||
""",
|
""",
|
||||||
sha256 = "e9b4cc60a3e676c6b4a9348424e44cff1ebada603ffb31b0df600dbd70e7fbf6",
|
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(
|
http_archive(
|
||||||
name = "eth2_spec_tests_minimal",
|
name = "consensus_spec_tests_minimal",
|
||||||
build_file_content = """
|
build_file_content = """
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "test_data",
|
name = "test_data",
|
||||||
@ -228,11 +228,11 @@ filegroup(
|
|||||||
)
|
)
|
||||||
""",
|
""",
|
||||||
sha256 = "cf82dc729ffe7b924f852e57d1973e1a6377c5b52acc903c953277fa9b4e6de8",
|
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(
|
http_archive(
|
||||||
name = "eth2_spec_tests_mainnet",
|
name = "consensus_spec_tests_mainnet",
|
||||||
build_file_content = """
|
build_file_content = """
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "test_data",
|
name = "test_data",
|
||||||
@ -244,11 +244,11 @@ filegroup(
|
|||||||
)
|
)
|
||||||
""",
|
""",
|
||||||
sha256 = "6c6792375b81858037014e282d28a64b0cf12e12daf16054265c85403b8b329f",
|
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(
|
http_archive(
|
||||||
name = "eth2_spec",
|
name = "consensus_spec",
|
||||||
build_file_content = """
|
build_file_content = """
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "spec_data",
|
name = "spec_data",
|
||||||
@ -258,9 +258,9 @@ filegroup(
|
|||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
)
|
)
|
||||||
""",
|
""",
|
||||||
sha256 = "16094dad1bab4e8ab3adb60c10e311cd1e294cd7bbf5a89505f24bebd3d0e513",
|
sha256 = "6a039696cefe9c1a35f677d118880afa71bbd487f75110a943618872ccdde170",
|
||||||
strip_prefix = "eth2.0-specs-" + eth2_spec_version[1:],
|
strip_prefix = "consensus-specs-" + consensus_spec_version[1:],
|
||||||
url = "https://github.com/ethereum/eth2.0-specs/archive/refs/tags/%s.tar.gz" % eth2_spec_version,
|
url = "https://github.com/ethereum/consensus-specs/archive/refs/tags/%s.tar.gz" % consensus_spec_version,
|
||||||
)
|
)
|
||||||
|
|
||||||
http_archive(
|
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)
|
[![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 {
|
for _, a := range atts {
|
||||||
// Based on the spec, don't process the attestation until the subsequent slot.
|
// 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.
|
// 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
|
nextSlot := a.Data.Slot + 1
|
||||||
if err := helpers.VerifySlotTime(uint64(s.genesisTime.Unix()), nextSlot, params.BeaconNetworkConfig().MaximumGossipClockDisparity); err != nil {
|
if err := helpers.VerifySlotTime(uint64(s.genesisTime.Unix()), nextSlot, params.BeaconNetworkConfig().MaximumGossipClockDisparity); err != nil {
|
||||||
continue
|
continue
|
||||||
|
@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// VerifyWeakSubjectivityRoot verifies the weak subjectivity root in the service struct.
|
// 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 {
|
func (s *Service) VerifyWeakSubjectivityRoot(ctx context.Context) error {
|
||||||
// TODO(7342): Remove the following to fully use weak subjectivity in production.
|
// 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 {
|
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.
|
// 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
|
// 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:
|
// 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 {
|
func key(seed [32]byte) string {
|
||||||
return string(seed[:])
|
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
|
// 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)
|
// return hash(domain_type + uint_to_bytes(epoch) + mix)
|
||||||
func Seed(state state.ReadOnlyBeaconState, epoch types.Epoch, domain [bls.DomainByteLength]byte) ([32]byte, error) {
|
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.
|
// rationale on why offset has to look down by 1.
|
||||||
lookAheadEpoch := epoch + params.BeaconConfig().EpochsPerHistoricalVector -
|
lookAheadEpoch := epoch + params.BeaconConfig().EpochsPerHistoricalVector -
|
||||||
params.BeaconConfig().MinSeedLookahead - 1
|
params.BeaconConfig().MinSeedLookahead - 1
|
||||||
|
@ -18,7 +18,7 @@ import (
|
|||||||
// ComputeWeakSubjectivityPeriod returns weak subjectivity period for the active validator count and finalized epoch.
|
// ComputeWeakSubjectivityPeriod returns weak subjectivity period for the active validator count and finalized epoch.
|
||||||
//
|
//
|
||||||
// Reference spec implementation:
|
// 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:
|
// 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.
|
// at a given epoch matches that of the checkpoint.
|
||||||
//
|
//
|
||||||
// Reference implementation:
|
// 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:
|
// 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
|
// # 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
|
want types.Epoch
|
||||||
}{
|
}{
|
||||||
// Asserting that we get the same numbers as defined in the reference table:
|
// 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: 32768, avgBalance: 28, want: 504},
|
||||||
{valCount: 65536, avgBalance: 28, want: 752},
|
{valCount: 65536, avgBalance: 28, want: 752},
|
||||||
{valCount: 131072, avgBalance: 28, want: 1248},
|
{valCount: 131072, avgBalance: 28, want: 1248},
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
Package p2p implements the Ethereum consensus networking specification.
|
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
|
Prysm specific implementation design docs
|
||||||
- Networking Design Doc: https://docs.google.com/document/d/1VyhobQRkEjEkEPxmmdWvaHfKWn0j6dEae_wLZlrFtfU/view
|
- Networking Design Doc: https://docs.google.com/document/d/1VyhobQRkEjEkEPxmmdWvaHfKWn0j6dEae_wLZlrFtfU/view
|
||||||
|
@ -11,7 +11,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/shared/gateway"
|
"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.
|
// 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 {
|
func wrapAttestationsArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req *http.Request) gateway.ErrorJson {
|
||||||
if _, ok := endpoint.PostRequest.(*submitAttestationRequestJson); ok {
|
if _, ok := endpoint.PostRequest.(*submitAttestationRequestJson); ok {
|
||||||
@ -29,7 +29,7 @@ func wrapAttestationsArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req
|
|||||||
return nil
|
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.
|
// 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 {
|
func wrapValidatorIndicesArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req *http.Request) gateway.ErrorJson {
|
||||||
if _, ok := endpoint.PostRequest.(*attesterDutiesRequestJson); ok {
|
if _, ok := endpoint.PostRequest.(*attesterDutiesRequestJson); ok {
|
||||||
@ -47,7 +47,7 @@ func wrapValidatorIndicesArray(endpoint gateway.Endpoint, _ http.ResponseWriter,
|
|||||||
return nil
|
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.
|
// 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 {
|
func wrapSignedAggregateAndProofArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req *http.Request) gateway.ErrorJson {
|
||||||
if _, ok := endpoint.PostRequest.(*submitAggregateAndProofsRequestJson); ok {
|
if _, ok := endpoint.PostRequest.(*submitAggregateAndProofsRequestJson); ok {
|
||||||
@ -65,7 +65,7 @@ func wrapSignedAggregateAndProofArray(endpoint gateway.Endpoint, _ http.Response
|
|||||||
return nil
|
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.
|
// 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 {
|
func wrapBeaconCommitteeSubscriptionsArray(endpoint gateway.Endpoint, _ http.ResponseWriter, req *http.Request) gateway.ErrorJson {
|
||||||
if _, ok := endpoint.PostRequest.(*submitBeaconCommitteeSubscriptionsRequestJson); ok {
|
if _, ok := endpoint.PostRequest.(*submitBeaconCommitteeSubscriptionsRequestJson); ok {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Package beacon defines a gRPC beacon service implementation,
|
// 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.
|
// This package includes the beacon and config endpoints.
|
||||||
package beacon
|
package beacon
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Package debug defines a gRPC beacon service implementation,
|
// 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.
|
// This package includes the beacon and config endpoints.
|
||||||
package debug
|
package debug
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Package events defines a gRPC events service implementation,
|
// 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.
|
// This package includes the events endpoint.
|
||||||
package events
|
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.
|
// that it was included in a block. The attestation may have expired.
|
||||||
// Refer to the ethereum consensus specification for more details on how
|
// Refer to the ethereum consensus specification for more details on how
|
||||||
// attestations are processed and when they are no longer valid.
|
// 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(
|
func (bs *Server) AttestationPool(
|
||||||
_ context.Context, req *ethpb.AttestationPoolRequest,
|
_ context.Context, req *ethpb.AttestationPoolRequest,
|
||||||
) (*ethpb.AttestationPoolResponse, error) {
|
) (*ethpb.AttestationPoolResponse, error) {
|
||||||
|
@ -265,7 +265,7 @@ func (vs *Server) inRangeVotes(ctx context.Context,
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warningf("Could not fetch eth1data height for received eth1data vote: %v", err)
|
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 {
|
if eth1Data.DepositCount < currentETH1Data.DepositCount {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -570,7 +570,7 @@ func (vs *Server) defaultEth1DataResponse(ctx context.Context, currentHeight *bi
|
|||||||
if depositsTillHeight == 0 {
|
if depositsTillHeight == 0 {
|
||||||
return vs.ChainStartFetcher.ChainStartEth1Data(), nil
|
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()
|
currentETH1Data := vs.HeadFetcher.HeadETH1Data()
|
||||||
if depositsTillHeight < currentETH1Data.DepositCount {
|
if depositsTillHeight < currentETH1Data.DepositCount {
|
||||||
return currentETH1Data, nil
|
return currentETH1Data, nil
|
||||||
|
@ -71,7 +71,7 @@ var (
|
|||||||
Value: 3500,
|
Value: 3500,
|
||||||
}
|
}
|
||||||
// EthApiPort specifies the port which runs the official Ethereum REST API.
|
// 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{
|
EthApiPort = &cli.IntFlag{
|
||||||
Name: "eth-api-port",
|
Name: "eth-api-port",
|
||||||
Usage: "The port which exposes a REST API conforming to the official Ethereum API specification.",
|
Usage: "The port which exposes a REST API conforming to the official Ethereum API specification.",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
## Prysm Internal Validator Deposit Contract
|
## 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
|
## How to execute tests
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ def deposit(pubkey: bytes[PUBKEY_LENGTH],
|
|||||||
deposit_amount: uint256 = msg.value / as_wei_value(1, "gwei")
|
deposit_amount: uint256 = msg.value / as_wei_value(1, "gwei")
|
||||||
assert deposit_amount >= MIN_DEPOSIT_AMOUNT
|
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(pubkey) == PUBKEY_LENGTH
|
||||||
assert len(withdrawal_credentials) == WITHDRAWAL_CREDENTIALS_LENGTH
|
assert len(withdrawal_credentials) == WITHDRAWAL_CREDENTIALS_LENGTH
|
||||||
assert len(signature) == SIGNATURE_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,
|
// 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.
|
// 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 {
|
service BeaconChain {
|
||||||
// Beacon state API related endpoints.
|
// 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.
|
// 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 {
|
service BeaconDebug {
|
||||||
// GetBeaconState returns full BeaconState object for given stateId.
|
// GetBeaconState returns full BeaconState object for given stateId.
|
||||||
rpc GetBeaconState(v1.StateRequest) returns (v1.BeaconStateResponse) {
|
rpc GetBeaconState(v1.StateRequest) returns (v1.BeaconStateResponse) {
|
||||||
|
@ -30,7 +30,7 @@ option php_namespace = "Ethereum\\Eth\\Service";
|
|||||||
|
|
||||||
// Events API
|
// 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 {
|
service Events {
|
||||||
rpc StreamEvents(v1.StreamEventsRequest) returns (stream gateway.EventSource) {
|
rpc StreamEvents(v1.StreamEventsRequest) returns (stream gateway.EventSource) {
|
||||||
option (google.api.http) = {
|
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.
|
// 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 {
|
service BeaconValidator {
|
||||||
// GetAttesterDuties requests the beacon node to provide a set of attestation duties, which should be performed
|
// GetAttesterDuties requests the beacon node to provide a set of attestation duties, which should be performed
|
||||||
// by validators, for a particular epoch.
|
// by validators, for a particular epoch.
|
||||||
|
@ -66,7 +66,7 @@ message BeaconBlockBody {
|
|||||||
bytes graffiti = 3 [(ethereum.eth.ext.ssz_size) = "32"];
|
bytes graffiti = 3 [(ethereum.eth.ext.ssz_size) = "32"];
|
||||||
|
|
||||||
// Block operations
|
// 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.
|
// At most MAX_PROPOSER_SLASHINGS.
|
||||||
repeated ProposerSlashing proposer_slashings = 4 [(ethereum.eth.ext.ssz_max) = "16"];
|
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
|
// Epoch when the validator was exited. This field is FAR_FUTURE_EPOCH if
|
||||||
// the validator has not exited.
|
// the validator has not exited.
|
||||||
// FAR_FUTURE_EPOCH is a constant defined by the official Ethereum Beacon Chain specification:
|
// 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"];
|
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
|
// Epoch when the validator is eligible to withdraw their funds. This field
|
||||||
// is FAR_FUTURE_EPOCH if the validator has not exited.
|
// is FAR_FUTURE_EPOCH if the validator has not exited.
|
||||||
// FAR_FUTURE_EPOCH is a constant defined by the official Ethereum Beacon Chain specification:
|
// 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"];
|
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"];
|
bytes graffiti = 3 [(ethereum.eth.ext.ssz_size) = "32"];
|
||||||
|
|
||||||
// Block operations
|
// 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.
|
// At most MAX_PROPOSER_SLASHINGS.
|
||||||
repeated v1.ProposerSlashing proposer_slashings = 4 [(ethereum.eth.ext.ssz_max) = "16"];
|
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"];
|
bytes graffiti = 3 [(ethereum.eth.ext.ssz_size) = "32"];
|
||||||
|
|
||||||
// Block operations
|
// 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.
|
// At most MAX_PROPOSER_SLASHINGS.
|
||||||
repeated ProposerSlashing proposer_slashings = 4 [(ethereum.eth.ext.ssz_max) = "16"];
|
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"];
|
bytes graffiti = 3 [(ethereum.eth.ext.ssz_size) = "32"];
|
||||||
|
|
||||||
// Block operations
|
// 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.
|
// At most MAX_PROPOSER_SLASHINGS.
|
||||||
repeated ProposerSlashing proposer_slashings = 4 [(ethereum.eth.ext.ssz_max) = "16"];
|
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.
|
// that it was included in a block. The attestation may have expired.
|
||||||
// Refer to the Ethereum Beacon Chain specification for more details on how
|
// Refer to the Ethereum Beacon Chain specification for more details on how
|
||||||
// attestations are processed and when they are no longer valid.
|
// 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) {
|
rpc AttestationPool(AttestationPoolRequest) returns (AttestationPoolResponse) {
|
||||||
option (google.api.http) = {
|
option (google.api.http) = {
|
||||||
get: "/eth/v1alpha1/beacon/attestations/pool"
|
get: "/eth/v1alpha1/beacon/attestations/pool"
|
||||||
|
@ -55,7 +55,7 @@ message BeaconState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The beacon state for Altair hard fork 1.
|
// 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 {
|
message BeaconStateAltair {
|
||||||
// Versioning [1001-2000]
|
// Versioning [1001-2000]
|
||||||
uint64 genesis_time = 1001;
|
uint64 genesis_time = 1001;
|
||||||
|
@ -33,7 +33,7 @@ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
|
|||||||
description: "{{ index . "description" }}";
|
description: "{{ index . "description" }}";
|
||||||
};
|
};
|
||||||
external_docs: {
|
external_docs: {
|
||||||
url: "https://github.com/ethereum/eth2.0-specs";
|
url: "https://github.com/ethereum/consensus-specs";
|
||||||
description: "Ethereum Consensus Specification on Github";
|
description: "Ethereum Consensus Specification on Github";
|
||||||
};
|
};
|
||||||
host: "api.prylabs.net",
|
host: "api.prylabs.net",
|
||||||
|
@ -59,6 +59,6 @@
|
|||||||
},
|
},
|
||||||
"externalDocs": {
|
"externalDocs": {
|
||||||
"description": "Ethereum Consensus Specification on Github",
|
"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.
|
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
|
// Epoch when the validator was exited. This field is FAR_FUTURE_EPOCH if
|
||||||
// the validator has not exited.
|
// the validator has not exited.
|
||||||
// FAR_FUTURE_EPOCH is a constant defined by the official Ethereum Beacon Chain specification:
|
// 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"];
|
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
|
// Epoch when the validator is eligible to withdraw their funds. This field
|
||||||
// is FAR_FUTURE_EPOCH if the validator has not exited.
|
// is FAR_FUTURE_EPOCH if the validator has not exited.
|
||||||
// FAR_FUTURE_EPOCH is a constant defined by the official Ethereum Beacon Chain specification:
|
// 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"];
|
uint64 withdrawable_epoch = 8 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/eth2-types.Epoch"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,8 +46,8 @@ go_test(
|
|||||||
"tags_test.go",
|
"tags_test.go",
|
||||||
],
|
],
|
||||||
data = [
|
data = [
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
tags = ["spectest"],
|
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).
|
// - 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.
|
// - 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) {
|
func DepositInput(depositKey, withdrawalKey bls.SecretKey, amountInGwei uint64) (*ethpb.Deposit_Data, [32]byte, error) {
|
||||||
depositMessage := ðpb.DepositMessage{
|
depositMessage := ðpb.DepositMessage{
|
||||||
PublicKey: depositKey.PublicKey().Marshal(),
|
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.
|
// 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 {
|
func Hash(data []byte) [32]byte {
|
||||||
h, ok := sha256Pool.Get().(hash.Hash)
|
h, ok := sha256Pool.Get().(hash.Hash)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
@ -39,9 +39,9 @@ go_test(
|
|||||||
"loader_test.go",
|
"loader_test.go",
|
||||||
],
|
],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec//:spec_data",
|
"@consensus_spec//:spec_data",
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
gotags = ["develop"],
|
gotags = ["develop"],
|
||||||
|
@ -14,7 +14,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestLoadConfigFileMainnet(t *testing.T) {
|
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) {
|
assertVals := func(name string, fields []string, c1, c2 *BeaconChainConfig) {
|
||||||
// Misc params.
|
// Misc params.
|
||||||
assert.Equal(t, c1.MaxCommitteesPerSlot, c2.MaxCommitteesPerSlot, "%s: MaxCommitteesPerSlot", name)
|
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
|
// configFilePath sets the proper config and returns the relevant
|
||||||
// config file path from eth2-spec-tests directory.
|
// config file path from eth2-spec-tests directory.
|
||||||
func configFilePath(t *testing.T, config string) string {
|
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)
|
require.NoError(t, err)
|
||||||
configFilePath := path.Join(filepath, "configs", config+".yaml")
|
configFilePath := path.Join(filepath, "configs", config+".yaml")
|
||||||
return configFilePath
|
return configFilePath
|
||||||
@ -240,7 +240,7 @@ func configFilePath(t *testing.T, config string) string {
|
|||||||
// presetsFilePath sets the proper preset and returns the relevant
|
// presetsFilePath sets the proper preset and returns the relevant
|
||||||
// preset file path from eth2-spec-tests directory.
|
// preset file path from eth2-spec-tests directory.
|
||||||
func presetsFilePath(t *testing.T, config string) string {
|
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)
|
require.NoError(t, err)
|
||||||
configFilePath := path.Join(filepath, "presets", config, "phase0.yaml")
|
configFilePath := path.Join(filepath, "presets", config, "phase0.yaml")
|
||||||
return configFilePath
|
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
|
// While eth1 mainnet block times are closer to 13s, we must conform with other clients in
|
||||||
// order to vote on the correct eth1 blocks.
|
// 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
|
// Bug prompting this change: https://github.com/prysmaticlabs/prysm/issues/7856
|
||||||
// Future optimization: https://github.com/prysmaticlabs/prysm/issues/7739
|
// Future optimization: https://github.com/prysmaticlabs/prysm/issues/7739
|
||||||
SecondsPerETH1Block: 14,
|
SecondsPerETH1Block: 14,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Spec Tests
|
# 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:
|
To run all `mainnet` spec tests:
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ go_test(
|
|||||||
"verify_test.go",
|
"verify_test.go",
|
||||||
],
|
],
|
||||||
data = [
|
data = [
|
||||||
"@eth2_spec_tests_general//:test_data",
|
"@consensus_spec_tests_general//:test_data",
|
||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
tags = ["spectest"],
|
tags = ["spectest"],
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
// Package bls includes tests to ensure conformity with the Ethereum BLS cryptography specification.
|
// 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
|
package bls
|
||||||
|
@ -44,7 +44,7 @@ func testFastAggregateVerify(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
msg := test.Input.Message
|
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 == "" {
|
if msg == "" {
|
||||||
msg = test.Input.Messages
|
msg = test.Input.Messages
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ type FastAggregateVerifyTest struct {
|
|||||||
Input struct {
|
Input struct {
|
||||||
Pubkeys []string `json:"pubkeys"`
|
Pubkeys []string `json:"pubkeys"`
|
||||||
Message string `json:"message"`
|
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"`
|
Messages string `json:"messages"`
|
||||||
Signature string `json:"signature"`
|
Signature string `json:"signature"`
|
||||||
} `json:"input"`
|
} `json:"input"`
|
||||||
|
@ -13,7 +13,7 @@ go_test(
|
|||||||
"voluntary_exit_test.go",
|
"voluntary_exit_test.go",
|
||||||
],
|
],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
],
|
],
|
||||||
shard_count = 4,
|
shard_count = 4,
|
||||||
tags = ["spectest"],
|
tags = ["spectest"],
|
||||||
|
@ -17,7 +17,7 @@ go_test(
|
|||||||
"slashings_test.go",
|
"slashings_test.go",
|
||||||
],
|
],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
],
|
],
|
||||||
shard_count = 4,
|
shard_count = 4,
|
||||||
tags = ["spectest"],
|
tags = ["spectest"],
|
||||||
|
@ -5,7 +5,7 @@ go_test(
|
|||||||
size = "small",
|
size = "small",
|
||||||
srcs = ["finality_test.go"],
|
srcs = ["finality_test.go"],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
],
|
],
|
||||||
shard_count = 4,
|
shard_count = 4,
|
||||||
tags = ["spectest"],
|
tags = ["spectest"],
|
||||||
|
@ -12,7 +12,7 @@ go_test(
|
|||||||
"voluntary_exit_test.go",
|
"voluntary_exit_test.go",
|
||||||
],
|
],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
],
|
],
|
||||||
shard_count = 4,
|
shard_count = 4,
|
||||||
tags = ["spectest"],
|
tags = ["spectest"],
|
||||||
|
@ -5,7 +5,7 @@ go_test(
|
|||||||
size = "small",
|
size = "small",
|
||||||
srcs = ["rewards_test.go"],
|
srcs = ["rewards_test.go"],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
],
|
],
|
||||||
tags = ["spectest"],
|
tags = ["spectest"],
|
||||||
deps = ["//spectest/shared/phase0/rewards:go_default_library"],
|
deps = ["//spectest/shared/phase0/rewards:go_default_library"],
|
||||||
|
@ -8,7 +8,7 @@ go_test(
|
|||||||
"slots_test.go",
|
"slots_test.go",
|
||||||
],
|
],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
],
|
],
|
||||||
tags = ["spectest"],
|
tags = ["spectest"],
|
||||||
deps = ["//spectest/shared/phase0/sanity:go_default_library"],
|
deps = ["//spectest/shared/phase0/sanity:go_default_library"],
|
||||||
|
@ -5,7 +5,7 @@ go_test(
|
|||||||
size = "small",
|
size = "small",
|
||||||
srcs = ["shuffle_test.go"],
|
srcs = ["shuffle_test.go"],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
],
|
],
|
||||||
tags = ["spectest"],
|
tags = ["spectest"],
|
||||||
deps = ["//spectest/shared/phase0/shuffling/core/shuffle:go_default_library"],
|
deps = ["//spectest/shared/phase0/shuffling/core/shuffle:go_default_library"],
|
||||||
|
@ -5,7 +5,7 @@ go_test(
|
|||||||
size = "small",
|
size = "small",
|
||||||
srcs = ["ssz_static_test.go"],
|
srcs = ["ssz_static_test.go"],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_mainnet//:test_data",
|
"@consensus_spec_tests_mainnet//:test_data",
|
||||||
],
|
],
|
||||||
tags = ["spectest"],
|
tags = ["spectest"],
|
||||||
deps = ["//spectest/shared/phase0/ssz_static:go_default_library"],
|
deps = ["//spectest/shared/phase0/ssz_static:go_default_library"],
|
||||||
|
@ -13,7 +13,7 @@ go_test(
|
|||||||
"voluntary_exit_test.go",
|
"voluntary_exit_test.go",
|
||||||
],
|
],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
eth_network = "minimal",
|
eth_network = "minimal",
|
||||||
tags = [
|
tags = [
|
||||||
|
@ -17,7 +17,7 @@ go_test(
|
|||||||
"slashings_test.go",
|
"slashings_test.go",
|
||||||
],
|
],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
eth_network = "minimal",
|
eth_network = "minimal",
|
||||||
tags = [
|
tags = [
|
||||||
|
@ -5,7 +5,7 @@ go_test(
|
|||||||
size = "small",
|
size = "small",
|
||||||
srcs = ["finality_test.go"],
|
srcs = ["finality_test.go"],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
eth_network = "minimal",
|
eth_network = "minimal",
|
||||||
shard_count = 4,
|
shard_count = 4,
|
||||||
|
@ -12,7 +12,7 @@ go_test(
|
|||||||
"voluntary_exit_test.go",
|
"voluntary_exit_test.go",
|
||||||
],
|
],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
eth_network = "minimal",
|
eth_network = "minimal",
|
||||||
tags = [
|
tags = [
|
||||||
|
@ -5,7 +5,7 @@ go_test(
|
|||||||
size = "small",
|
size = "small",
|
||||||
srcs = ["rewards_test.go"],
|
srcs = ["rewards_test.go"],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
eth_network = "minimal",
|
eth_network = "minimal",
|
||||||
tags = [
|
tags = [
|
||||||
|
@ -8,7 +8,7 @@ go_test(
|
|||||||
"slots_test.go",
|
"slots_test.go",
|
||||||
],
|
],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
eth_network = "minimal",
|
eth_network = "minimal",
|
||||||
tags = [
|
tags = [
|
||||||
|
@ -5,7 +5,7 @@ go_test(
|
|||||||
size = "small",
|
size = "small",
|
||||||
srcs = ["shuffle_test.go"],
|
srcs = ["shuffle_test.go"],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
eth_network = "minimal",
|
eth_network = "minimal",
|
||||||
tags = [
|
tags = [
|
||||||
|
@ -5,7 +5,7 @@ go_test(
|
|||||||
size = "small",
|
size = "small",
|
||||||
srcs = ["ssz_static_test.go"],
|
srcs = ["ssz_static_test.go"],
|
||||||
data = glob(["*.yaml"]) + [
|
data = glob(["*.yaml"]) + [
|
||||||
"@eth2_spec_tests_minimal//:test_data",
|
"@consensus_spec_tests_minimal//:test_data",
|
||||||
],
|
],
|
||||||
eth_network = "minimal",
|
eth_network = "minimal",
|
||||||
tags = [
|
tags = [
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Specs checker tool
|
# 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.
|
to be later used for making sure that our reference comments match specs definitions precisely.
|
||||||
|
|
||||||
### Updating the reference specs
|
### Updating the reference specs
|
||||||
|
@ -12,7 +12,7 @@ import (
|
|||||||
"github.com/urfave/cli/v2"
|
"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.
|
// Regex to find Python's code snippets in markdown.
|
||||||
var reg2 = regexp.MustCompile(`(?msU)^\x60\x60\x60python\n+def\s(.*)^\x60\x60\x60`)
|
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)
|
[![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
|
// 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.
|
// 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)
|
v.waitToSlotTwoThirds(ctx, slot)
|
||||||
|
|
||||||
res, err := v.validatorClient.SubmitAggregateSelectionProof(ctx, ðpb.AggregateSelectionRequest{
|
res, err := v.validatorClient.SubmitAggregateSelectionProof(ctx, ðpb.AggregateSelectionRequest{
|
||||||
|
Loading…
Reference in New Issue
Block a user