// SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2023 Snowfork use crate::{ decompress_sync_committee_bits, Config, CurrentSyncCommittee, Pallet as EthereumBeaconClient, Update, ValidatorsRoot, Vec, }; use primitives::PublicKeyPrepared; use sp_core::H256; pub fn participant_pubkeys( update: &Update, ) -> Result, &'static str> { let sync_committee_bits = decompress_sync_committee_bits(update.sync_aggregate.sync_committee_bits); let current_sync_committee = >::get(); let pubkeys = EthereumBeaconClient::::find_pubkeys( &sync_committee_bits, (*current_sync_committee.pubkeys).as_ref(), true, ); Ok(pubkeys) } pub fn absent_pubkeys(update: &Update) -> Result, &'static str> { let sync_committee_bits = decompress_sync_committee_bits(update.sync_aggregate.sync_committee_bits); let current_sync_committee = >::get(); let pubkeys = EthereumBeaconClient::::find_pubkeys( &sync_committee_bits, (*current_sync_committee.pubkeys).as_ref(), false, ); Ok(pubkeys) } pub fn signing_root(update: &Update) -> Result { let validators_root = >::get(); let signing_root = EthereumBeaconClient::::signing_root( &update.attested_header, validators_root, update.signature_slot, )?; Ok(signing_root) }