expose exodus-pallet API in casper runtime

Signed-off-by: Uncle Stretch <uncle.stretch@ghostchain.io>
This commit is contained in:
Uncle Stretch 2026-10-21 17:27:12 +03:00
parent 66ca7545ce
commit ab7f978ccc
Signed by: str3tch
GPG Key ID: 84F3190747EE79AA
2 changed files with 40 additions and 2 deletions

View File

@ -1,6 +1,6 @@
[package]
name = "casper-runtime"
version = "4.0.14"
version = "4.0.15"
build = "build.rs"
description = "Runtime of the Casper Network"
edition.workspace = true
@ -75,6 +75,7 @@ ghost-networks = { workspace = true }
ghost-governance = { workspace = true }
ghost-weaver = { workspace = true }
ghost-exodus = { workspace = true }
ghost-exodus-runtime-api = { workspace = true }
ghost-sudo = { workspace = true }
ghost-traits = { workspace = true }
ghost-helpers = { workspace = true }
@ -188,6 +189,7 @@ std = [
"ghost-governance/std",
"ghost-weaver/std",
"ghost-exodus/std",
"ghost-exodus-runtime-api/std",
"ghost-sudo/std",
"casper-runtime-constants/std",
"runtime-common/std",

View File

@ -69,6 +69,7 @@ pub use frame_system::Call as SystemCall;
pub use pallet_balances::Call as BalancesCall;
pub use pallet_election_provider_multi_phase::{Call as EPMCall, GeometricDepositBase};
use ghost_helpers::networks::{NetworkCurve, NetworkType};
use ghost_weaver::sr25519::AuthorityId as GhostWeaverId;
use ghost_exodus::sr25519::AuthorityId as GhostExodusId;
@ -123,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
spec_name: create_runtime_str!("casper"),
impl_name: create_runtime_str!("casper-svengali"),
authoring_version: 0,
spec_version: 7,
spec_version: 8,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
@ -906,6 +907,7 @@ parameter_types! {
pub ExodusUnsignedPriority: TransactionPriority =
Perbill::from_percent(90) * TransactionPriority::MAX;
pub MaxExodusRequestCount: u32 = 32;
pub MaxAuthoritiesChunks: u32 = 32;
pub WeavingDelay: u64 = 50;
pub AttestationDelay: u64 = 25;
@ -949,6 +951,7 @@ impl ghost_exodus::Config for Runtime {
type UnsignedPriority = ExodusUnsignedPriority;
type MaxAuthorities = MaxActiveValidators;
type MaxAuthoritiesChunks = MaxAuthoritiesChunks;
type MaxExodusRequestCount = MaxExodusRequestCount;
type DkgRoundPeriod = ExodusDkgRoundPeriod;
type RemovalLimit = ExodusRemovalLimit;
@ -1156,6 +1159,39 @@ sp_api::impl_runtime_apis! {
}
}
impl ghost_exodus_runtime_api::ExodusApi<Block> for Runtime {
fn get_evm_rotation_metadata(
dkg_index: u64,
network_type: NetworkType,
) -> ghost_exodus_runtime_api::PreparedEvmMessage {
GhostExodus::api_get_evm_rotation(dkg_index, network_type)
}
fn get_evm_bridge_metadata(
dkg_index: u64,
network_id: u64,
session: u64,
) -> ghost_exodus_runtime_api::PreparedEvmMessage {
GhostExodus::api_get_evm_bridge(dkg_index, network_id, session)
}
fn get_evm_governance_metadata(
dkg_index: u64,
network_id: u64,
session: u64,
) -> ghost_exodus_runtime_api::PreparedEvmMessage {
GhostExodus::api_get_evm_governance(dkg_index, network_id, session)
}
fn pending_exodus_request_count() -> u32 {
GhostExodus::api_pending_exodus_request_count()
}
fn is_qualification_ongoing(network_curve: NetworkCurve) -> bool {
GhostExodus::api_is_qualification_ongoing(network_curve)
}
}
impl pallet_staking_runtime_api::StakingApi<Block, Balance, AccountId> for Runtime {
fn nominations_quota(balance: Balance) -> u32 {
Staking::api_nominations_quota(balance)