def prepare_state_and_get_random_deposits(spec, state, rng): num_deposits = rng.randrange(spec.MAX_DEPOSITS) deposit_data_leaves = [ spec.DepositData() for _ in range(len(state.validators)) ] deposits = [] # First build deposit data leaves for i in range(num_deposits): index = len(state.validators) + i _, root, deposit_data_leaves = build_deposit( spec, deposit_data_leaves, pubkeys[index], privkeys[index], spec.MAX_EFFECTIVE_BALANCE, withdrawal_credentials=b'\x00' * 32, signed=True, ) state.eth1_data.deposit_root = root state.eth1_data.deposit_count += num_deposits # Then for that context, build deposits/proofs for i in range(num_deposits): index = len(state.validators) + i deposit, _, _ = deposit_from_context(spec, deposit_data_leaves, index) deposits.append(deposit) return deposits
def get_random_deposits(spec, state, rng, num_deposits=None): if not num_deposits: num_deposits = rng.randrange(1, spec.MAX_DEPOSITS) if num_deposits == 0: return [], b"\x00" * 32 deposit_data_leaves = [ spec.DepositData() for _ in range(len(state.validators)) ] deposits = [] # First build deposit data leaves for i in range(num_deposits): index = len(state.validators) + i _, root, deposit_data_leaves = build_deposit( spec, deposit_data_leaves, pubkeys[index], privkeys[index], spec.MAX_EFFECTIVE_BALANCE, withdrawal_credentials=b'\x00' * 32, signed=True, ) # Then for that context, build deposits/proofs for i in range(num_deposits): index = len(state.validators) + i deposit, _, _ = deposit_from_context(spec, deposit_data_leaves, index) deposits.append(deposit) return deposits, root
def test_wrong_deposit_for_deposit_count(spec, state): deposit_data_leaves = [ spec.DepositData() for _ in range(len(state.validators)) ] # build root for deposit_1 index_1 = len(deposit_data_leaves) pubkey_1 = pubkeys[index_1] privkey_1 = privkeys[index_1] _, _, deposit_data_leaves = build_deposit( spec, state, deposit_data_leaves, pubkey_1, privkey_1, spec.MAX_EFFECTIVE_BALANCE, withdrawal_credentials=b'\x00' * 32, signed=True, ) deposit_count_1 = len(deposit_data_leaves) # build root for deposit_2 index_2 = len(deposit_data_leaves) pubkey_2 = pubkeys[index_2] privkey_2 = privkeys[index_2] deposit_2, root_2, deposit_data_leaves = build_deposit( spec, state, deposit_data_leaves, pubkey_2, privkey_2, spec.MAX_EFFECTIVE_BALANCE, withdrawal_credentials=b'\x00' * 32, signed=True, ) # state has root for deposit_2 but is at deposit_count for deposit_1 state.eth1_data.deposit_root = root_2 state.eth1_data.deposit_count = deposit_count_1 yield from run_deposit_processing(spec, state, deposit_2, index_2, valid=False)