def _add_attestations_root_to_block_lookup(db: DatabaseAPI, block: BaseBeaconBlock) -> None: root = block.signing_root for index, attestation in enumerate(block.body.attestations): attestation_key = AttestationKey(root, index) db.set( SchemaV1.make_attestation_root_to_block_lookup_key( attestation.hash_tree_root), ssz.encode(attestation_key), )
def _get_attestation_key_by_root( db: DatabaseAPI, attestation_root: Hash32) -> Tuple[Hash32, int]: try: encoded_key = db[ SchemaV1.make_attestation_root_to_block_lookup_key( attestation_root)] except KeyError: raise AttestationRootNotFound( "Attestation root {0} not found".format( encode_hex(attestation_root))) attestation_key = ssz.decode(encoded_key, sedes=AttestationKey) return attestation_key.block_root, attestation_key.index
def attestation_exists(self, attestation_root: Hash32) -> bool: lookup_key = SchemaV1.make_attestation_root_to_block_lookup_key( attestation_root) return self.exists(lookup_key)