update ShufflingRef version of get_attesting_indices to Electra v1.5.0-alpha.10 (#6801)
This commit is contained in:
parent
177897929b
commit
0e86c0d17e
|
@ -99,21 +99,30 @@ iterator get_attesting_indices*(shufflingRef: ShufflingRef,
|
||||||
if bits[index_in_committee]:
|
if bits[index_in_committee]:
|
||||||
yield validator_index
|
yield validator_index
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.0/specs/electra/beacon-chain.md#modified-get_attesting_indices
|
# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/electra/beacon-chain.md#modified-get_attesting_indices
|
||||||
iterator get_attesting_indices*(shufflingRef: ShufflingRef,
|
iterator get_attesting_indices*(
|
||||||
slot: Slot,
|
shufflingRef: ShufflingRef, slot: Slot,
|
||||||
committee_bits: AttestationCommitteeBits,
|
committee_bits: AttestationCommitteeBits,
|
||||||
aggregation_bits: ElectraCommitteeValidatorsBits, on_chain: static bool):
|
aggregation_bits: ElectraCommitteeValidatorsBits, on_chain: static bool):
|
||||||
ValidatorIndex =
|
ValidatorIndex =
|
||||||
when on_chain:
|
when on_chain:
|
||||||
var pos = 0
|
var committee_offset = 0
|
||||||
for committee_index in get_committee_indices(committee_bits):
|
for committee_index in committee_bits.oneIndices:
|
||||||
for _, validator_index in get_beacon_committee(
|
if not (committee_index.uint64 <
|
||||||
shufflingRef, slot, committee_index):
|
get_committee_count_per_slot(shufflingRef)):
|
||||||
|
continue # invalid attestation, but found in check_attestation()
|
||||||
|
let committee = get_beacon_committee(
|
||||||
|
shufflingRef, slot, committee_index.CommitteeIndex)
|
||||||
|
|
||||||
if aggregation_bits[pos]:
|
if aggregation_bits.len < committee_offset + len(committee):
|
||||||
yield validator_index
|
# Would overflow, invalid attestation caught in check_attestation()
|
||||||
pos += 1
|
continue
|
||||||
|
|
||||||
|
for i, attester_index in committee:
|
||||||
|
if aggregation_bits[committee_offset + i]:
|
||||||
|
yield attester_index
|
||||||
|
|
||||||
|
committee_offset += len(committee)
|
||||||
else:
|
else:
|
||||||
let committee_index = get_committee_index_one(committee_bits)
|
let committee_index = get_committee_index_one(committee_bits)
|
||||||
for validator_index in get_attesting_indices(
|
for validator_index in get_attesting_indices(
|
||||||
|
|
|
@ -162,7 +162,7 @@ programMain:
|
||||||
db.putSyncCommittee(period, syncCommittee)
|
db.putSyncCommittee(period, syncCommittee)
|
||||||
db.putLatestFinalizedHeader(finalizedHeader)
|
db.putLatestFinalizedHeader(finalizedHeader)
|
||||||
|
|
||||||
var optimisticFcuFut: Future[(PayloadExecutionStatus, Opt[BlockHash])]
|
var optimisticFcuFut: Future[(PayloadExecutionStatus, Opt[Hash32])]
|
||||||
.Raising([CancelledError])
|
.Raising([CancelledError])
|
||||||
proc onOptimisticHeader(
|
proc onOptimisticHeader(
|
||||||
lightClient: LightClient, optimisticHeader: ForkedLightClientHeader) =
|
lightClient: LightClient, optimisticHeader: ForkedLightClientHeader) =
|
||||||
|
|
|
@ -7,10 +7,6 @@
|
||||||
|
|
||||||
{.push raises: [].}
|
{.push raises: [].}
|
||||||
|
|
||||||
# At the time of writing, the exact definitions of what should be used for
|
|
||||||
# cryptography in the spec is in flux, with sizes and test vectors still being
|
|
||||||
# hashed out. This layer helps isolate those chagnes.
|
|
||||||
|
|
||||||
# BLS signatures can be combined such that multiple signatures are aggregated.
|
# BLS signatures can be combined such that multiple signatures are aggregated.
|
||||||
# Each time a new signature is added, the corresponding public key must be
|
# Each time a new signature is added, the corresponding public key must be
|
||||||
# added to the verification key as well - if a key signs twice, it must be added
|
# added to the verification key as well - if a key signs twice, it must be added
|
||||||
|
|
|
@ -164,7 +164,7 @@ proc checkResponse(idList: seq[DataColumnIdentifier],
|
||||||
block_root = hash_tree_root(columns[i].signed_block_header.message)
|
block_root = hash_tree_root(columns[i].signed_block_header.message)
|
||||||
id = idList[i]
|
id = idList[i]
|
||||||
|
|
||||||
# Check if the column reponse is a subset
|
# Check if the column response is a subset
|
||||||
if binarySearch(idList, columns[i], cmpSidecarIdentifier) == -1:
|
if binarySearch(idList, columns[i], cmpSidecarIdentifier) == -1:
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# Validator client
|
# Validator client
|
||||||
|
|
||||||
In the most simple setup, a single beacon node paired with an execution client is all that is needed to run a successful validator setup.
|
In the simplest setup, a single beacon node paired with an execution client is all that is needed to run a successful validator setup.
|
||||||
|
|
||||||
Nimbus however also provides options for running advanded setups that provide additional security and redundancy.
|
Nimbus however also provides options for running advanced setups that provide additional security and redundancy.
|
||||||
|
|
||||||
See the [validator client page](./validator-client.md) to get started!
|
See the [validator client page](./validator-client.md) to get started!
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
||||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||||
|
|
||||||
|
{.push raises: [].}
|
||||||
|
|
||||||
import
|
import
|
||||||
std/os,
|
std/os,
|
||||||
confutils,
|
confutils,
|
||||||
|
@ -45,9 +47,14 @@ type
|
||||||
name: "out-dir" }: OutDir
|
name: "out-dir" }: OutDir
|
||||||
|
|
||||||
proc main =
|
proc main =
|
||||||
let conf = load Config
|
let conf =
|
||||||
|
try:
|
||||||
|
load Config
|
||||||
|
except ConfigurationError:
|
||||||
|
error "Configuration error"
|
||||||
|
quit 1
|
||||||
if conf.threshold == 0:
|
if conf.threshold == 0:
|
||||||
error "The specified treshold must be greater than zero"
|
error "The specified threshold must be greater than zero"
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
if conf.remoteSignersUrls.len == 0:
|
if conf.remoteSignersUrls.len == 0:
|
||||||
|
@ -55,7 +62,7 @@ proc main =
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
if conf.threshold > conf.remoteSignersUrls.len.uint32:
|
if conf.threshold > conf.remoteSignersUrls.len.uint32:
|
||||||
error "The specified treshold must be lower or equal to the number of signers"
|
error "The specified threshold must be lower or equal to the number of signers"
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
let rng = HmacDrbgContext.new()
|
let rng = HmacDrbgContext.new()
|
||||||
|
|
Loading…
Reference in New Issue