2018-12-17 18:03:53 +00:00
|
|
|
import
|
2019-01-23 18:45:15 +00:00
|
|
|
confutils,
|
2018-12-27 23:40:22 +00:00
|
|
|
../beacon_chain/[extras, ssz],
|
2019-01-26 19:52:30 +00:00
|
|
|
../beacon_chain/spec/[beaconstate, datatypes, digest, validator],
|
2019-01-23 18:45:15 +00:00
|
|
|
../tests/testutil
|
2018-12-17 18:03:53 +00:00
|
|
|
|
2018-12-27 20:14:37 +00:00
|
|
|
proc stateSize(deposits: int, maxContent = false) =
|
|
|
|
var state = get_initial_beacon_state(
|
2019-01-18 01:42:17 +00:00
|
|
|
makeInitialDeposits(deposits), 0, Eth1Data(), {skipValidation})
|
2018-12-17 18:03:53 +00:00
|
|
|
|
2018-12-27 20:14:37 +00:00
|
|
|
if maxContent:
|
|
|
|
# TODO verify this is correct, but generally we collect up to two epochs
|
|
|
|
# of attestations, and each block has a cap on the number of
|
|
|
|
# attestations it may hold, so we'll just add so many of them
|
|
|
|
state.latest_attestations.setLen(MAX_ATTESTATIONS * EPOCH_LENGTH * 2)
|
2019-01-26 19:52:30 +00:00
|
|
|
let
|
|
|
|
crosslink_committees = get_crosslink_committees_at_slot(state, 0)
|
|
|
|
validatorsPerCommittee =
|
2019-02-06 19:37:25 +00:00
|
|
|
len(crosslink_committees[0].committee) # close enough..
|
2018-12-27 20:14:37 +00:00
|
|
|
for a in state.latest_attestations.mitems():
|
2019-02-07 16:55:48 +00:00
|
|
|
a.aggregation_bitfield.setLen(validatorsPerCommittee)
|
2018-12-17 18:03:53 +00:00
|
|
|
echo "Validators: ", deposits, ", total: ", state.serialize().len
|
|
|
|
|
2018-12-27 20:14:37 +00:00
|
|
|
dispatch(stateSize)
|