mirror of
https://github.com/status-im/eth2.0-specs.git
synced 2025-01-14 12:46:06 +00:00
Add getter to Vyper contract for Merkle branches
Returns the Merkle branch for the leaf at index `index`. This getter provides an alternative way for beacon chain proposers to access the Merkle tree of deposits rather than being Ethereum 1.0 light clients. The method can be called on a trusted Ethereum 1.0 archive node at specific past block numbers to retrieve the Merkle branch needed to register a validator.
This commit is contained in:
parent
9dfc459849
commit
994a42e6b1
@ -692,6 +692,18 @@ def deposit(deposit_input: bytes[2048]):
|
||||
def get_deposit_root() -> bytes32:
|
||||
return self.deposit_tree[1]
|
||||
|
||||
@public
|
||||
@constant
|
||||
def get_merkle_branch(index: uint256) -> bytes32[32]: # size is DEPOSIT_CONTRACT_TREE_DEPTH (symbolic const not supported)
|
||||
idx: uint256 = index + TWO_TO_POWER_OF_TREE_DEPTH
|
||||
ret: bytes32[32] # size is DEPOSIT_CONTRACT_TREE_DEPTH
|
||||
for i in range(DEPOSIT_CONTRACT_TREE_DEPTH):
|
||||
if idx % 2 == 1:
|
||||
ret[i] = self.deposit_tree[idx - 1]
|
||||
else:
|
||||
ret[i] = self.deposit_tree[idx + 1]
|
||||
idx /= 2
|
||||
return ret
|
||||
```
|
||||
|
||||
## Beacon chain processing
|
||||
|
Loading…
x
Reference in New Issue
Block a user