deposit with other fork version
This commit is contained in:
parent
a295451f37
commit
71206c9a26
|
@ -49,6 +49,11 @@ def build_deposit(spec,
|
||||||
deposit_data = build_deposit_data(spec, pubkey, privkey, amount, withdrawal_credentials, state=state, signed=signed)
|
deposit_data = build_deposit_data(spec, pubkey, privkey, amount, withdrawal_credentials, state=state, signed=signed)
|
||||||
index = len(deposit_data_list)
|
index = len(deposit_data_list)
|
||||||
deposit_data_list.append(deposit_data)
|
deposit_data_list.append(deposit_data)
|
||||||
|
return deposit_from_context(spec, deposit_data_list, index)
|
||||||
|
|
||||||
|
|
||||||
|
def deposit_from_context(spec, deposit_data_list, index):
|
||||||
|
deposit_data = deposit_data_list[index]
|
||||||
root = hash_tree_root(List[spec.DepositData, 2**spec.DEPOSIT_CONTRACT_TREE_DEPTH](*deposit_data_list))
|
root = hash_tree_root(List[spec.DepositData, 2**spec.DEPOSIT_CONTRACT_TREE_DEPTH](*deposit_data_list))
|
||||||
tree = calc_merkle_tree_from_leaves(tuple([d.hash_tree_root() for d in deposit_data_list]))
|
tree = calc_merkle_tree_from_leaves(tuple([d.hash_tree_root() for d in deposit_data_list]))
|
||||||
proof = list(get_merkle_proof(tree, item_index=index, tree_len=32)) + [(index + 1).to_bytes(32, 'little')]
|
proof = list(get_merkle_proof(tree, item_index=index, tree_len=32)) + [(index + 1).to_bytes(32, 'little')]
|
||||||
|
|
|
@ -3,9 +3,10 @@ from eth2spec.test.helpers.deposits import (
|
||||||
build_deposit,
|
build_deposit,
|
||||||
prepare_state_and_deposit,
|
prepare_state_and_deposit,
|
||||||
sign_deposit_data,
|
sign_deposit_data,
|
||||||
)
|
deposit_from_context)
|
||||||
from eth2spec.test.helpers.state import get_balance
|
from eth2spec.test.helpers.state import get_balance
|
||||||
from eth2spec.test.helpers.keys import privkeys, pubkeys
|
from eth2spec.test.helpers.keys import privkeys, pubkeys
|
||||||
|
from eth2spec.utils.bls import bls_sign
|
||||||
|
|
||||||
|
|
||||||
def run_deposit_processing(spec, state, deposit, validator_index, valid=True, effective=True):
|
def run_deposit_processing(spec, state, deposit, validator_index, valid=True, effective=True):
|
||||||
|
@ -93,6 +94,35 @@ def test_new_deposit_over_max(spec, state):
|
||||||
yield from run_deposit_processing(spec, state, deposit, validator_index)
|
yield from run_deposit_processing(spec, state, deposit, validator_index)
|
||||||
|
|
||||||
|
|
||||||
|
@with_all_phases
|
||||||
|
@spec_state_test
|
||||||
|
@always_bls
|
||||||
|
def test_invalid_sig_other_version(spec, state):
|
||||||
|
validator_index = len(state.validators)
|
||||||
|
amount = spec.MAX_EFFECTIVE_BALANCE
|
||||||
|
|
||||||
|
pubkey = pubkeys[validator_index]
|
||||||
|
privkey = privkeys[validator_index]
|
||||||
|
withdrawal_credentials = spec.BLS_WITHDRAWAL_PREFIX + spec.hash(pubkey)[1:]
|
||||||
|
|
||||||
|
deposit_data = spec.DepositData(
|
||||||
|
pubkey=pubkey, withdrawal_credentials=withdrawal_credentials, amount=amount,
|
||||||
|
signature=bls_sign(
|
||||||
|
message_hash=spec.hash_tree_root(
|
||||||
|
spec.DepositMessage(pubkey=pubkey, withdrawal_credentials=withdrawal_credentials, amount=amount)),
|
||||||
|
privkey=privkey,
|
||||||
|
domain=spec.compute_domain(domain_type=spec.DOMAIN_DEPOSIT, fork_version=spec.Version('0xaabbccdd')),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
deposit, root, _ = deposit_from_context(spec, [deposit_data], 0)
|
||||||
|
|
||||||
|
state.eth1_deposit_index = 0
|
||||||
|
state.eth1_data.deposit_root = root
|
||||||
|
state.eth1_data.deposit_count = 1
|
||||||
|
|
||||||
|
yield from run_deposit_processing(spec, state, deposit, validator_index, valid=True, effective=False)
|
||||||
|
|
||||||
|
|
||||||
@with_all_phases
|
@with_all_phases
|
||||||
@spec_state_test
|
@spec_state_test
|
||||||
@always_bls
|
@always_bls
|
||||||
|
|
Loading…
Reference in New Issue