Files
pezkuwi-sdk/pezbridges/pezsnowbridge/primitives/beacon/src/updates.rs
T
pezkuwichain 6b597bebcf fix: EnsureOrigin try_successful_origin and snowbridge rename
- Fix pezpallet-welati EnsureOrigin implementations (3 fixes)
  - Remove incorrect #[cfg(not(feature = "runtime-benchmarks"))] blocks
  - Affects EnsureSerok, EnsureParlementer, EnsureDiwan

- Fix asset-hub-zagros governance origins macros (2 fixes)
  - Remove non-benchmark try_successful_origin from decl_unit_ensures!
  - Remove non-benchmark try_successful_origin from decl_ensure!

- Rename snowbridge -> pezsnowbridge for consistency

- Update WORKFLOW_PLAN.md with build status and package names
  - Correct package names: pezkuwi-teyrchain-bin, pezstaging-node-cli
  - Mark completed builds: pezkuwi, pezkuwi-teyrchain-bin,
    pezstaging-node-cli, teyrchain-template-node
2025-12-25 01:26:18 +03:00

90 lines
2.7 KiB
Rust

// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: 2023 Snowfork <hello@snowfork.com>
use codec::{Decode, DecodeWithMemTracking, Encode};
use pezframe_support::{CloneNoBound, PartialEqNoBound, RuntimeDebugNoBound};
use pezsp_core::H256;
use pezsp_std::prelude::*;
use scale_info::TypeInfo;
use crate::types::{BeaconHeader, SyncAggregate, SyncCommittee};
#[derive(
Encode,
Decode,
DecodeWithMemTracking,
CloneNoBound,
PartialEqNoBound,
RuntimeDebugNoBound,
TypeInfo,
)]
#[cfg_attr(
feature = "std",
derive(serde::Serialize, serde::Deserialize),
serde(deny_unknown_fields, bound(serialize = ""), bound(deserialize = ""))
)]
pub struct CheckpointUpdate<const COMMITTEE_SIZE: usize> {
pub header: BeaconHeader,
pub current_sync_committee: SyncCommittee<COMMITTEE_SIZE>,
pub current_sync_committee_branch: Vec<H256>,
pub validators_root: H256,
pub block_roots_root: H256,
pub block_roots_branch: Vec<H256>,
}
#[derive(
Default,
Encode,
Decode,
DecodeWithMemTracking,
CloneNoBound,
PartialEqNoBound,
RuntimeDebugNoBound,
TypeInfo,
)]
#[cfg_attr(
feature = "std",
derive(serde::Deserialize),
serde(bound(serialize = ""), bound(deserialize = ""))
)]
pub struct Update<const COMMITTEE_SIZE: usize, const COMMITTEE_BITS_SIZE: usize> {
/// A recent header attesting to the finalized header, using its `state_root`.
pub attested_header: BeaconHeader,
/// The signing data that the sync committee produced for this attested header, including
/// who participated in the vote and the resulting signature.
pub sync_aggregate: SyncAggregate<COMMITTEE_SIZE, COMMITTEE_BITS_SIZE>,
/// The slot at which the sync aggregate can be found, typically attested_header.slot + 1, if
/// the next slot block was not missed.
pub signature_slot: u64,
/// The next sync committee for the next sync committee period, if present.
pub next_sync_committee_update: Option<NextSyncCommitteeUpdate<COMMITTEE_SIZE>>,
/// The latest finalized header.
pub finalized_header: BeaconHeader,
/// The merkle proof testifying to the finalized header, using the `attested_header.state_root`
/// as tree root.
pub finality_branch: Vec<H256>,
/// The finalized_header's `block_roots` root in the beacon state, used for ancestry proofs.
pub block_roots_root: H256,
/// The merkle path to prove the `block_roots_root` value.
pub block_roots_branch: Vec<H256>,
}
#[derive(
Default,
Encode,
Decode,
DecodeWithMemTracking,
CloneNoBound,
PartialEqNoBound,
RuntimeDebugNoBound,
TypeInfo,
)]
#[cfg_attr(
feature = "std",
derive(serde::Deserialize),
serde(deny_unknown_fields, bound(serialize = ""), bound(deserialize = ""))
)]
pub struct NextSyncCommitteeUpdate<const COMMITTEE_SIZE: usize> {
pub next_sync_committee: SyncCommittee<COMMITTEE_SIZE>,
pub next_sync_committee_branch: Vec<H256>,
}