prysm-pulse/proto/eth/v1alpha1/beacon_block.proto
terence tsao 81c53c26fb Update run time to v0.9 (#3935)
* Update seed domains (#3872)

* Remove Transfers (#3870)

* Remove active index roots and compact committee roots (#3869)

* Update inclusion reward (#3886)

* Alter proposer selection logic (#3884)

* Fix early committee bias (#3888)

* Remove shards and committees (#3896)

* Epoch spec tests v0.9 (#3907)

* Block spec test v0.9 (#3905)

* rm'ed in protobuf

* build proto

* build proto

* build proto

* fix core package

* Gazelle

* Fixed all the tests

* Fixed static test

* Comment out spec test for now

* One more skip

* fix-roundRobinSync (#3862)

* Starting but need new seed function

* Revert initial sync

* Updated Proposer Slashing

* Fixed all tests

* Lint

* Update inclusion reward

* Fill randao mixes with eth1 data hash

* Test

* Fixing test part1

* All tests passing

* One last test

* Updated config

* Build proto

* Proper skip message

* Conflict and fmt

* Removed crosslinks and shards. Built

* Format and gazelle

* Fixed all the block package tests

* Fixed all the helper tests

* All epoch package tests pass

* All core package tests pass

* Fixed operation tests

* Started fixing rpc test

* RPC tests passed!

* Fixed all init sync tests

* All tests pass

* Fixed blockchain tests

* Lint

* Lint

* Preston's feedback

* Starting

* Remove container

* Fixed block spec tests

* All passing except for block_processing test

* Failing block processing test

* Starting

* Add AggregateAndProof

* All mainnet test passes

* Update deposit contract (#3906)

* Proto spec tests v0.9 (#3908)

* Starting

* Add AggregateAndProof

* Unskip block util tests (#3910)

* rm'ed in protobuf

* build proto

* build proto

* build proto

* fix core package

* Gazelle

* Fixed all the tests

* Fixed static test

* Comment out spec test for now

* One more skip

* fix-roundRobinSync (#3862)

* Starting but need new seed function

* Revert initial sync

* Updated Proposer Slashing

* Fixed all tests

* Lint

* Update inclusion reward

* Fill randao mixes with eth1 data hash

* Test

* Fixing test part1

* All tests passing

* One last test

* Updated config

* Build proto

* Proper skip message

* Conflict and fmt

* Removed crosslinks and shards. Built

* Format and gazelle

* Fixed all the block package tests

* Fixed all the helper tests

* All epoch package tests pass

* All core package tests pass

* Fixed operation tests

* Started fixing rpc test

* RPC tests passed!

* Fixed all init sync tests

* All tests pass

* Fixed blockchain tests

* Lint

* Lint

* Preston's feedback

* Starting

* Remove container

* Fixed block spec tests

* All passing except for block_processing test

* Failing block processing test

* Starting

* Add AggregateAndProof

* All mainnet test passes

* Unskip block util tests

* Slot processing spec test V0.9 (#3912)

* Starting

* Add AggregateAndProof

* Unskip slot processing mainnet test

* Unskip minimal spec test for finalization (#3920)

* Remove outdated interop tests (#3922)

* Rm outdated interop tests

* Rm test runner

* Gazelle

* Update validator to use proposer slot (#3919)

* Fix committee assignment (#3931)

* Replace shard with committee index (#3930)

* Conflict

* Clean up (#3933)

* Remove shard filter in db (#3936)

* Remove lightouse compatibility test (#3939)

* Update Committee Cache for v0.9 (#3948)

* Updated committee cache

* Removed shuffled indices cache

* Started testing run time

* Lint

* Fixed test

* Safeguard against nil head state

* address edge case

* add test

* Fixed TestRoundRobinSync by doubling the epochs

* Unskip TestProtoCompatability (#3958)

* Unskip TestProtoCompatability

* Update WORKSPACE

* Fix minimal config (#3959)

* fix minimal configs

* fix hardcoded value in test

* Simplify verify att time (#3961)

* update readme for deposit contract, regen bindings for vyper 0.1.0b12 (#3963)

* update readme for deposit contract, regen bindings

* medium

* Check nil base state (#3964)

* Copy Block When Receiving it From Sync (#3966)

* copy block

* clone for other service methods too

* Change logging of Bitfield  (#3956)

* change logging of bits

* preston's review

* Unskip Beacon Server Test (#3962)

* run test till the end

* fix up proto message types

* fmt

* resolve broken tests

* better error handling

* fixing new logic to use archived proposer info

* fix up logic

* clip using the max effective balance

* broken build fix with num arg mismatch

* amend archive

* archival logic changed

* rename test

* archive both proposer and attester seeds

* page size 100

* further experiments

* further experimentation, archivedProposerIndex seems wrong

* test passes

* rem log

* fix broken test

* fix test

* gaz

* fix imports

* ethapis
2019-11-11 17:03:43 -05:00

160 lines
5.7 KiB
Protocol Buffer

syntax = "proto3";
package ethereum.eth.v1alpha1;
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
import "proto/eth/v1alpha1/attestation.proto";
option go_package = "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1;eth";
// The Ethereum 2.0 beacon block.
message BeaconBlock {
// Beacon chain slot that this block represents.
uint64 slot = 1;
// 32 byte root of the parent block.
bytes parent_root = 2 [(gogoproto.moretags) = "ssz-size:\"32\""];
// 32 byte root of the resulting state after processing this block.
bytes state_root = 3 [(gogoproto.moretags) = "ssz-size:\"32\""];
// The block body itself.
BeaconBlockBody body = 4;
// 96 byte BLS signature from the validator that produced this block.
bytes signature = 5 [(gogoproto.moretags) = "ssz-size:\"96\""];
}
// The block body of an Ethereum 2.0 beacon block.
message BeaconBlockBody {
// The validators RANDAO reveal 96 byte value.
bytes randao_reveal = 1 [(gogoproto.moretags) = "ssz-size:\"96\""];
// A reference to the Ethereum 1.x chain.
Eth1Data eth1_data = 2;
// 32 byte field of arbitrary data. This field may contain any data and
// is not used for anything other than a fun message.
bytes graffiti = 3 [(gogoproto.moretags) = "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
// At most MAX_PROPOSER_SLASHINGS.
repeated ProposerSlashing proposer_slashings = 4 [(gogoproto.moretags) = "ssz-max:\"16\""];
// At most MAX_ATTESTER_SLASHINGS.
repeated AttesterSlashing attester_slashings = 5 [(gogoproto.moretags) = "ssz-max:\"1\""];
// At most MAX_ATTESTATIONS.
repeated Attestation attestations = 6 [(gogoproto.moretags) = "ssz-max:\"128\""];
// At most MAX_DEPOSITS.
repeated Deposit deposits = 7 [(gogoproto.moretags) = "ssz-max:\"16\""];
// At most MAX_VOLUNTARY_EXITS.
repeated VoluntaryExit voluntary_exits = 8 [(gogoproto.moretags) = "ssz-max:\"16\""];
}
// Proposer slashings are proofs that a slashable offense has been committed by
// proposing two conflicting blocks from the same validator.
message ProposerSlashing {
// Validator index of the validator that proposed the two conflicting block
// headers.
uint64 proposer_index = 1;
// First conflicting block header.
BeaconBlockHeader header_1 = 2;
// Second conflicting block header.
BeaconBlockHeader header_2 = 3;
}
// Attestor slashings are proofs that a slashable offense has been committed by
// attestating to two conflicting pieces of information by the same validator.
message AttesterSlashing {
// First conflicting attestation.
IndexedAttestation attestation_1 = 1;
// Second conflicting attestation.
IndexedAttestation attestation_2 = 2;
}
// Deposit into the Ethereum 2.0 from the Ethereum 1.x deposit contract.
message Deposit {
message Data {
// 48 byte BLS public key of the validator.
bytes public_key = 1 [(gogoproto.moretags) = "ssz-size:\"48\" spec-name:\"pubkey\""];
// A 32 byte hash of the withdrawal address public key.
bytes withdrawal_credentials = 2 [(gogoproto.moretags) = "ssz-size:\"32\""];
// Deposit amount in gwei.
uint64 amount = 3;
// 96 byte signature from the validators public key.
bytes signature = 4 [(gogoproto.moretags) = "ssz-size:\"96\""];
}
// 32 byte roots in the deposit tree branch.
repeated bytes proof = 1 [(gogoproto.moretags) = "ssz-size:\"33,32\""];
Data data = 2;
}
// A message that represents a validator signaling that they want to voluntarily
// withdraw from the active validator set.
message VoluntaryExit {
// The epoch on when exit request becomes valid.
uint64 epoch = 1;
// Index of the exiting validator.
uint64 validator_index = 2;
// Validator's 96 byte signature
bytes signature = 3 [(gogoproto.moretags) = "ssz-size:\"96\""];
}
// Eth1Data represents references to the Ethereum 1.x deposit contract.
message Eth1Data {
// The 32 byte deposit tree root for the last deposit included in this
// block.
bytes deposit_root = 1 [(gogoproto.moretags) = "ssz-size:\"32\""];
// The total number of deposits included in the beacon chain since genesis
// including the deposits in this block.
uint64 deposit_count = 2;
// The 32 byte block hash of the Ethereum 1.x block considered for deposit
// inclusion.
bytes block_hash = 3 [(gogoproto.moretags) = "ssz-size:\"32\""];
}
// A beacon block header is essentially a beacon block with only a reference to
// the beacon body as a 32 byte merkle tree root. This type of message is more
// lightweight than a full beacon block.
message BeaconBlockHeader {
// Beacon chain slot that this block represents.
uint64 slot = 1;
// 32 byte merkle tree root of the parent ssz encoded block.
bytes parent_root = 2 [(gogoproto.moretags) = "ssz-size:\"32\""];
// 32 byte merkle tree root of the resulting ssz encoded state after processing this block.
bytes state_root = 3 [(gogoproto.moretags) = "ssz-size:\"32\""];
// 32 byte merkle tree root of the ssz encoded block body.
bytes body_root = 4 [(gogoproto.moretags) = "ssz-size:\"32\""];
// 96 byte BLS signature from the validator that produced this block.
bytes signature = 5 [(gogoproto.moretags) = "ssz-size:\"96\""];
}
message IndexedAttestation {
repeated uint64 custody_bit_0_indices = 1 [(gogoproto.moretags) = "ssz-max:\"2048\""];
repeated uint64 custody_bit_1_indices = 2 [(gogoproto.moretags) = "ssz-max:\"2048\""];
AttestationData data = 3;
// 96 bytes aggregate signature.
bytes signature = 4 [(gogoproto.moretags) = "ssz-size:\"96\""];
}