EIP-4881: Deposit Contract Snapshot Interface

Discussion thread for EIP-4881:

https://eips.ethereum.org/EIPS/eip-4881

Standardizing the format and endpoint for transmitting a snapshot of the deposit Merkle tree

Initial discussion on discord

Existing Implementations

In MerkleTree.generate_proof the code references node.left and node.right but these properties don’t actually exist in MerkleTree. For a non-empty tree you would always wind up with a Node instance which does have those properties but for an empty tree the root would a Zero instance and I believe the method would fail.

It would probably be clearer if this duck typing was avoided in any case.