rustfmt the ghost-networks pallet
Signed-off-by: Uncle Stinky <uncle.stinky@ghostchain.io>
This commit is contained in:
parent
40a8152f69
commit
f7ba592d50
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "ghost-networks"
|
name = "ghost-networks"
|
||||||
version = "0.1.10"
|
version = "0.1.11"
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
|
@ -13,17 +13,19 @@ fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
|
|||||||
frame_system::Pallet::<T>::assert_last_event(generic_event.into());
|
frame_system::Pallet::<T>::assert_last_event(generic_event.into());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn prepare_network<T: Config>(
|
fn prepare_network<T: Config>(n: u32, m: u32) -> (<T as module::Config>::NetworkId, NetworkData) {
|
||||||
n: u32, m: u32,
|
|
||||||
) -> (<T as module::Config>::NetworkId, NetworkData) {
|
|
||||||
let chain_id: <T as module::Config>::NetworkId = Default::default();
|
let chain_id: <T as module::Config>::NetworkId = Default::default();
|
||||||
let chain_id = chain_id.saturating_add((n + m).into());
|
let chain_id = chain_id.saturating_add((n + m).into());
|
||||||
|
|
||||||
let mut gatekeeper = b"0x".to_vec();
|
let mut gatekeeper = b"0x".to_vec();
|
||||||
for i in 0..40 { gatekeeper.push(i); }
|
for i in 0..40 {
|
||||||
|
gatekeeper.push(i);
|
||||||
|
}
|
||||||
|
|
||||||
let mut topic_name = b"0x".to_vec();
|
let mut topic_name = b"0x".to_vec();
|
||||||
for i in 0..64 { topic_name.push(i); }
|
for i in 0..64 {
|
||||||
|
topic_name.push(i);
|
||||||
|
}
|
||||||
|
|
||||||
let network = NetworkData {
|
let network = NetworkData {
|
||||||
chain_name: sp_std::vec![0x69; n as usize],
|
chain_name: sp_std::vec![0x69; n as usize],
|
||||||
@ -51,8 +53,11 @@ fn create_network<T: Config>(
|
|||||||
let authority = T::RegisterOrigin::try_successful_origin()
|
let authority = T::RegisterOrigin::try_successful_origin()
|
||||||
.map_err(|_| BenchmarkError::Weightless)?;
|
.map_err(|_| BenchmarkError::Weightless)?;
|
||||||
GhostNetworks::<T>::register_network(
|
GhostNetworks::<T>::register_network(
|
||||||
authority.clone(), chain_id.clone(), network.clone()
|
authority.clone(),
|
||||||
).map_err(|_| BenchmarkError::Weightless)?;
|
chain_id.clone(),
|
||||||
|
network.clone(),
|
||||||
|
)
|
||||||
|
.map_err(|_| BenchmarkError::Weightless)?;
|
||||||
network
|
network
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -4,27 +4,27 @@
|
|||||||
|
|
||||||
use frame_support::{
|
use frame_support::{
|
||||||
pallet_prelude::*,
|
pallet_prelude::*,
|
||||||
storage::PrefixIterator, traits::{tokens::fungible::Inspect, EnsureOrigin},
|
storage::PrefixIterator,
|
||||||
|
traits::{tokens::fungible::Inspect, EnsureOrigin},
|
||||||
};
|
};
|
||||||
use frame_system::pallet_prelude::*;
|
use frame_system::pallet_prelude::*;
|
||||||
use scale_info::TypeInfo;
|
use scale_info::TypeInfo;
|
||||||
|
|
||||||
use sp_runtime::{
|
use sp_runtime::{
|
||||||
traits::{CheckedSub, CheckedAdd, AtLeast32BitUnsigned, Member},
|
|
||||||
curve::PiecewiseLinear,
|
curve::PiecewiseLinear,
|
||||||
|
traits::{AtLeast32BitUnsigned, CheckedAdd, CheckedSub, Member},
|
||||||
DispatchResult,
|
DispatchResult,
|
||||||
};
|
};
|
||||||
use sp_std::{prelude::*, convert::TryInto};
|
use sp_std::{convert::TryInto, prelude::*};
|
||||||
|
|
||||||
pub use ghost_traits::networks::{
|
pub use ghost_traits::networks::{
|
||||||
NetworkDataBasicHandler, NetworkDataInspectHandler,
|
NetworkDataBasicHandler, NetworkDataInspectHandler, NetworkDataMutateHandler,
|
||||||
NetworkDataMutateHandler,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
mod weights;
|
mod weights;
|
||||||
|
|
||||||
pub use module::*;
|
|
||||||
pub use crate::weights::WeightInfo;
|
pub use crate::weights::WeightInfo;
|
||||||
|
pub use module::*;
|
||||||
|
|
||||||
#[cfg(any(feature = "runtime-benchmarks", test))]
|
#[cfg(any(feature = "runtime-benchmarks", test))]
|
||||||
mod benchmarking;
|
mod benchmarking;
|
||||||
@ -33,9 +33,8 @@ mod mock;
|
|||||||
#[cfg(all(feature = "std", test))]
|
#[cfg(all(feature = "std", test))]
|
||||||
mod tests;
|
mod tests;
|
||||||
|
|
||||||
pub type BalanceOf<T> = <<T as Config>::Currency as Inspect<
|
pub type BalanceOf<T> =
|
||||||
<T as frame_system::Config>::AccountId,
|
<<T as Config>::Currency as Inspect<<T as frame_system::Config>::AccountId>>::Balance;
|
||||||
>>::Balance;
|
|
||||||
|
|
||||||
#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)]
|
#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)]
|
||||||
pub enum NetworkType {
|
pub enum NetworkType {
|
||||||
@ -45,7 +44,9 @@ pub enum NetworkType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Default for NetworkType {
|
impl Default for NetworkType {
|
||||||
fn default() -> Self { NetworkType::Evm }
|
fn default() -> Self {
|
||||||
|
NetworkType::Evm
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)]
|
#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)]
|
||||||
@ -69,7 +70,8 @@ pub struct BridgeAdjustment<Balance> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub struct BridgedInflationCurve<RewardCurve, T>(core::marker::PhantomData<(RewardCurve, T)>);
|
pub struct BridgedInflationCurve<RewardCurve, T>(core::marker::PhantomData<(RewardCurve, T)>);
|
||||||
impl<Balance, RewardCurve, T> pallet_staking::EraPayout<Balance> for BridgedInflationCurve<RewardCurve, T>
|
impl<Balance, RewardCurve, T> pallet_staking::EraPayout<Balance>
|
||||||
|
for BridgedInflationCurve<RewardCurve, T>
|
||||||
where
|
where
|
||||||
Balance: Default + AtLeast32BitUnsigned + Clone + Copy + From<u128>,
|
Balance: Default + AtLeast32BitUnsigned + Clone + Copy + From<u128>,
|
||||||
RewardCurve: Get<&'static PiecewiseLinear<'static>>,
|
RewardCurve: Get<&'static PiecewiseLinear<'static>>,
|
||||||
@ -99,10 +101,11 @@ where
|
|||||||
match piecewise_linear
|
match piecewise_linear
|
||||||
.calculate_for_fraction_times_denominator(total_staked, adjusted_issuance)
|
.calculate_for_fraction_times_denominator(total_staked, adjusted_issuance)
|
||||||
.checked_mul(&accumulated_balance)
|
.checked_mul(&accumulated_balance)
|
||||||
.and_then(|product| product.checked_div(&adjusted_issuance)) {
|
.and_then(|product| product.checked_div(&adjusted_issuance))
|
||||||
Some(payout) => (payout, accumulated_balance.saturating_sub(payout)),
|
{
|
||||||
None => (Balance::default(), Balance::default()),
|
Some(payout) => (payout, accumulated_balance.saturating_sub(payout)),
|
||||||
}
|
None => (Balance::default(), Balance::default()),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +131,7 @@ pub mod module {
|
|||||||
+ TypeInfo
|
+ TypeInfo
|
||||||
+ MaybeSerializeDeserialize
|
+ MaybeSerializeDeserialize
|
||||||
+ MaxEncodedLen;
|
+ MaxEncodedLen;
|
||||||
|
|
||||||
/// The origin required to register new network.
|
/// The origin required to register new network.
|
||||||
type RegisterOrigin: EnsureOrigin<Self::RuntimeOrigin>;
|
type RegisterOrigin: EnsureOrigin<Self::RuntimeOrigin>;
|
||||||
/// The origin required to update network information.
|
/// The origin required to update network information.
|
||||||
@ -155,18 +158,53 @@ pub mod module {
|
|||||||
#[pallet::event]
|
#[pallet::event]
|
||||||
#[pallet::generate_deposit(pub(crate) fn deposit_event)]
|
#[pallet::generate_deposit(pub(crate) fn deposit_event)]
|
||||||
pub enum Event<T: Config> {
|
pub enum Event<T: Config> {
|
||||||
NetworkRegistered { chain_id: T::NetworkId, network: NetworkData },
|
NetworkRegistered {
|
||||||
NetworkNameUpdated { chain_id: T::NetworkId, chain_name: Vec<u8> },
|
chain_id: T::NetworkId,
|
||||||
NetworkEndpointUpdated { chain_id: T::NetworkId, default_endpoint: Vec<u8> },
|
network: NetworkData,
|
||||||
NetworkFinalityDelayUpdated { chain_id: T::NetworkId, finality_delay: u64 },
|
},
|
||||||
NetworkRateLimitDelayUpdated { chain_id: T::NetworkId, rate_limit_delay: u64 },
|
NetworkNameUpdated {
|
||||||
NetworkBlockDistanceUpdated { chain_id: T::NetworkId, block_distance: u64 },
|
chain_id: T::NetworkId,
|
||||||
NetworkTypeUpdated { chain_id: T::NetworkId, network_type: NetworkType },
|
chain_name: Vec<u8>,
|
||||||
NetworkGatekeeperUpdated { chain_id: T::NetworkId, gatekeeper: Vec<u8> },
|
},
|
||||||
NetworkTopicNameUpdated { chain_id: T::NetworkId, topic_name: Vec<u8> },
|
NetworkEndpointUpdated {
|
||||||
NetworkIncomingFeeUpdated { chain_id: T::NetworkId, incoming_fee: u32 },
|
chain_id: T::NetworkId,
|
||||||
NetworkOutgoingFeeUpdated { chain_id: T::NetworkId, outgoing_fee: u32 },
|
default_endpoint: Vec<u8>,
|
||||||
NetworkRemoved { chain_id: T::NetworkId },
|
},
|
||||||
|
NetworkFinalityDelayUpdated {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
finality_delay: u64,
|
||||||
|
},
|
||||||
|
NetworkRateLimitDelayUpdated {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
rate_limit_delay: u64,
|
||||||
|
},
|
||||||
|
NetworkBlockDistanceUpdated {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
block_distance: u64,
|
||||||
|
},
|
||||||
|
NetworkTypeUpdated {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
network_type: NetworkType,
|
||||||
|
},
|
||||||
|
NetworkGatekeeperUpdated {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
gatekeeper: Vec<u8>,
|
||||||
|
},
|
||||||
|
NetworkTopicNameUpdated {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
topic_name: Vec<u8>,
|
||||||
|
},
|
||||||
|
NetworkIncomingFeeUpdated {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
incoming_fee: u32,
|
||||||
|
},
|
||||||
|
NetworkOutgoingFeeUpdated {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
outgoing_fee: u32,
|
||||||
|
},
|
||||||
|
NetworkRemoved {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::storage]
|
#[pallet::storage]
|
||||||
@ -180,8 +218,7 @@ pub mod module {
|
|||||||
|
|
||||||
#[pallet::storage]
|
#[pallet::storage]
|
||||||
#[pallet::getter(fn accumulated_commission)]
|
#[pallet::getter(fn accumulated_commission)]
|
||||||
pub type AccumulatedCommission<T: Config> =
|
pub type AccumulatedCommission<T: Config> = StorageValue<_, BalanceOf<T>, ValueQuery>;
|
||||||
StorageValue<_, BalanceOf<T>, ValueQuery>;
|
|
||||||
|
|
||||||
#[pallet::storage]
|
#[pallet::storage]
|
||||||
#[pallet::getter(fn networks)]
|
#[pallet::getter(fn networks)]
|
||||||
@ -190,13 +227,8 @@ pub mod module {
|
|||||||
|
|
||||||
#[pallet::storage]
|
#[pallet::storage]
|
||||||
#[pallet::getter(fn gatekeeper_amount)]
|
#[pallet::getter(fn gatekeeper_amount)]
|
||||||
pub type GatekeeperAmount<T: Config> = StorageMap<
|
pub type GatekeeperAmount<T: Config> =
|
||||||
_,
|
StorageMap<_, Twox64Concat, T::NetworkId, BalanceOf<T>, ValueQuery>;
|
||||||
Twox64Concat,
|
|
||||||
T::NetworkId,
|
|
||||||
BalanceOf<T>,
|
|
||||||
ValueQuery,
|
|
||||||
>;
|
|
||||||
|
|
||||||
#[pallet::genesis_config]
|
#[pallet::genesis_config]
|
||||||
pub struct GenesisConfig<T: Config> {
|
pub struct GenesisConfig<T: Config> {
|
||||||
@ -205,7 +237,7 @@ pub mod module {
|
|||||||
|
|
||||||
impl<T: Config> Default for GenesisConfig<T> {
|
impl<T: Config> Default for GenesisConfig<T> {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self { networks: vec![] }
|
Self { networks: vec![] }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,12 +245,13 @@ pub mod module {
|
|||||||
impl<T: Config> BuildGenesisConfig for GenesisConfig<T> {
|
impl<T: Config> BuildGenesisConfig for GenesisConfig<T> {
|
||||||
fn build(&self) {
|
fn build(&self) {
|
||||||
if !self.networks.is_empty() {
|
if !self.networks.is_empty() {
|
||||||
self.networks.iter().for_each(|(chain_id, network_metadata)| {
|
self.networks
|
||||||
let network =
|
.iter()
|
||||||
NetworkData::decode(&mut &network_metadata[..])
|
.for_each(|(chain_id, network_metadata)| {
|
||||||
.expect("Error decoding NetworkData");
|
let network = NetworkData::decode(&mut &network_metadata[..])
|
||||||
Pallet::<T>::do_register_network(chain_id.clone(), network)
|
.expect("Error decoding NetworkData");
|
||||||
.expect("Error registering network");
|
Pallet::<T>::do_register_network(chain_id.clone(), network)
|
||||||
|
.expect("Error registering network");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -268,10 +301,7 @@ pub mod module {
|
|||||||
chain_name: Vec<u8>,
|
chain_name: Vec<u8>,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_network_name(
|
Self::do_update_network_name(chain_id, chain_name)
|
||||||
chain_id,
|
|
||||||
chain_name,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(2)]
|
#[pallet::call_index(2)]
|
||||||
@ -284,10 +314,7 @@ pub mod module {
|
|||||||
default_endpoint: Vec<u8>,
|
default_endpoint: Vec<u8>,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_network_endpoint(
|
Self::do_update_network_endpoint(chain_id, default_endpoint)
|
||||||
chain_id,
|
|
||||||
default_endpoint,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(3)]
|
#[pallet::call_index(3)]
|
||||||
@ -298,10 +325,7 @@ pub mod module {
|
|||||||
finality_delay: u64,
|
finality_delay: u64,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_network_finality_delay(
|
Self::do_update_network_finality_delay(chain_id, finality_delay)
|
||||||
chain_id,
|
|
||||||
finality_delay,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(4)]
|
#[pallet::call_index(4)]
|
||||||
@ -312,10 +336,7 @@ pub mod module {
|
|||||||
rate_limit_delay: u64,
|
rate_limit_delay: u64,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_network_rate_limit_delay(
|
Self::do_update_network_rate_limit_delay(chain_id, rate_limit_delay)
|
||||||
chain_id,
|
|
||||||
rate_limit_delay,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(5)]
|
#[pallet::call_index(5)]
|
||||||
@ -326,10 +347,7 @@ pub mod module {
|
|||||||
block_distance: u64,
|
block_distance: u64,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_network_block_distance(
|
Self::do_update_network_block_distance(chain_id, block_distance)
|
||||||
chain_id,
|
|
||||||
block_distance,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(6)]
|
#[pallet::call_index(6)]
|
||||||
@ -340,10 +358,7 @@ pub mod module {
|
|||||||
network_type: NetworkType,
|
network_type: NetworkType,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_network_type(
|
Self::do_update_network_type(chain_id, network_type)
|
||||||
chain_id,
|
|
||||||
network_type,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(7)]
|
#[pallet::call_index(7)]
|
||||||
@ -354,10 +369,7 @@ pub mod module {
|
|||||||
gatekeeper: Vec<u8>,
|
gatekeeper: Vec<u8>,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_network_gatekeeper(
|
Self::do_update_network_gatekeeper(chain_id, gatekeeper)
|
||||||
chain_id,
|
|
||||||
gatekeeper,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(8)]
|
#[pallet::call_index(8)]
|
||||||
@ -368,10 +380,7 @@ pub mod module {
|
|||||||
topic_name: Vec<u8>,
|
topic_name: Vec<u8>,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_network_topic_name(
|
Self::do_update_network_topic_name(chain_id, topic_name)
|
||||||
chain_id,
|
|
||||||
topic_name,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(9)]
|
#[pallet::call_index(9)]
|
||||||
@ -382,10 +391,7 @@ pub mod module {
|
|||||||
incoming_fee: u32,
|
incoming_fee: u32,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_incoming_network_fee(
|
Self::do_update_incoming_network_fee(chain_id, incoming_fee)
|
||||||
chain_id,
|
|
||||||
incoming_fee,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(10)]
|
#[pallet::call_index(10)]
|
||||||
@ -396,18 +402,12 @@ pub mod module {
|
|||||||
outgoing_fee: u32,
|
outgoing_fee: u32,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_update_outgoing_network_fee(
|
Self::do_update_outgoing_network_fee(chain_id, outgoing_fee)
|
||||||
chain_id,
|
|
||||||
outgoing_fee,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(11)]
|
#[pallet::call_index(11)]
|
||||||
#[pallet::weight(T::WeightInfo::remove_network())]
|
#[pallet::weight(T::WeightInfo::remove_network())]
|
||||||
pub fn remove_network(
|
pub fn remove_network(origin: OriginFor<T>, chain_id: T::NetworkId) -> DispatchResult {
|
||||||
origin: OriginFor<T>,
|
|
||||||
chain_id: T::NetworkId,
|
|
||||||
) -> DispatchResult {
|
|
||||||
T::RemoveOrigin::ensure_origin_or_root(origin)?;
|
T::RemoveOrigin::ensure_origin_or_root(origin)?;
|
||||||
Self::do_remove_network(chain_id)
|
Self::do_remove_network(chain_id)
|
||||||
}
|
}
|
||||||
@ -416,12 +416,12 @@ pub mod module {
|
|||||||
|
|
||||||
impl<T: Config> Pallet<T> {
|
impl<T: Config> Pallet<T> {
|
||||||
/// Register a new network.
|
/// Register a new network.
|
||||||
pub fn do_register_network(
|
pub fn do_register_network(chain_id: T::NetworkId, network: NetworkData) -> DispatchResult {
|
||||||
chain_id: T::NetworkId,
|
|
||||||
network: NetworkData,
|
|
||||||
) -> DispatchResult {
|
|
||||||
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
||||||
ensure!(maybe_network.is_none(), Error::<T>::NetworkAlreadyRegistered);
|
ensure!(
|
||||||
|
maybe_network.is_none(),
|
||||||
|
Error::<T>::NetworkAlreadyRegistered
|
||||||
|
);
|
||||||
*maybe_network = Some(network.clone());
|
*maybe_network = Some(network.clone());
|
||||||
Ok(())
|
Ok(())
|
||||||
})?;
|
})?;
|
||||||
@ -443,10 +443,7 @@ impl<T: Config> Pallet<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Update existent network name.
|
/// Update existent network name.
|
||||||
pub fn do_update_network_name(
|
pub fn do_update_network_name(chain_id: T::NetworkId, chain_name: Vec<u8>) -> DispatchResult {
|
||||||
chain_id: T::NetworkId,
|
|
||||||
chain_name: Vec<u8>,
|
|
||||||
) -> DispatchResult {
|
|
||||||
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
||||||
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
||||||
let net = maybe_network.as_mut().unwrap();
|
let net = maybe_network.as_mut().unwrap();
|
||||||
@ -562,8 +559,10 @@ impl<T: Config> Pallet<T> {
|
|||||||
chain_id: T::NetworkId,
|
chain_id: T::NetworkId,
|
||||||
gatekeeper: Vec<u8>,
|
gatekeeper: Vec<u8>,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
ensure!(gatekeeper.len() == 42 && gatekeeper[0] == 48 && gatekeeper[1] == 120,
|
ensure!(
|
||||||
Error::<T>::WrongGatekeeperAddress);
|
gatekeeper.len() == 42 && gatekeeper[0] == 48 && gatekeeper[1] == 120,
|
||||||
|
Error::<T>::WrongGatekeeperAddress
|
||||||
|
);
|
||||||
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
||||||
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
||||||
let net = maybe_network.as_mut().unwrap();
|
let net = maybe_network.as_mut().unwrap();
|
||||||
@ -583,8 +582,10 @@ impl<T: Config> Pallet<T> {
|
|||||||
chain_id: T::NetworkId,
|
chain_id: T::NetworkId,
|
||||||
topic_name: Vec<u8>,
|
topic_name: Vec<u8>,
|
||||||
) -> DispatchResult {
|
) -> DispatchResult {
|
||||||
ensure!(topic_name.len() == 66 && topic_name[0] == 48 && topic_name[1] == 120,
|
ensure!(
|
||||||
Error::<T>::WrongTopicName);
|
topic_name.len() == 66 && topic_name[0] == 48 && topic_name[1] == 120,
|
||||||
|
Error::<T>::WrongTopicName
|
||||||
|
);
|
||||||
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
||||||
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
||||||
let net = maybe_network.as_mut().unwrap();
|
let net = maybe_network.as_mut().unwrap();
|
||||||
@ -667,15 +668,16 @@ impl<T: Config> NetworkDataMutateHandler<NetworkData, BalanceOf<T>> for Pallet<T
|
|||||||
network_id: &T::NetworkId,
|
network_id: &T::NetworkId,
|
||||||
amount: &BalanceOf<T>,
|
amount: &BalanceOf<T>,
|
||||||
) -> Result<BalanceOf<T>, ()> {
|
) -> Result<BalanceOf<T>, ()> {
|
||||||
let new_gatekeeper_amount = GatekeeperAmount::<T>::mutate(network_id, |gatekeeper_amount| {
|
let new_gatekeeper_amount =
|
||||||
match gatekeeper_amount.checked_add(amount) {
|
GatekeeperAmount::<T>::mutate(network_id, |gatekeeper_amount| match gatekeeper_amount
|
||||||
|
.checked_add(amount)
|
||||||
|
{
|
||||||
Some(value) => {
|
Some(value) => {
|
||||||
*gatekeeper_amount = value;
|
*gatekeeper_amount = value;
|
||||||
Ok(value)
|
Ok(value)
|
||||||
},
|
}
|
||||||
None => Err(())
|
None => Err(()),
|
||||||
}
|
})?;
|
||||||
})?;
|
|
||||||
|
|
||||||
Ok(new_gatekeeper_amount)
|
Ok(new_gatekeeper_amount)
|
||||||
}
|
}
|
||||||
@ -684,28 +686,29 @@ impl<T: Config> NetworkDataMutateHandler<NetworkData, BalanceOf<T>> for Pallet<T
|
|||||||
network_id: &T::NetworkId,
|
network_id: &T::NetworkId,
|
||||||
amount: &BalanceOf<T>,
|
amount: &BalanceOf<T>,
|
||||||
) -> Result<BalanceOf<T>, ()> {
|
) -> Result<BalanceOf<T>, ()> {
|
||||||
let new_gatekeeper_amount = GatekeeperAmount::<T>::mutate(network_id, |gatekeeper_amount| {
|
let new_gatekeeper_amount =
|
||||||
match gatekeeper_amount.checked_sub(amount) {
|
GatekeeperAmount::<T>::mutate(network_id, |gatekeeper_amount| match gatekeeper_amount
|
||||||
|
.checked_sub(amount)
|
||||||
|
{
|
||||||
Some(value) => {
|
Some(value) => {
|
||||||
*gatekeeper_amount = value;
|
*gatekeeper_amount = value;
|
||||||
Ok(value)
|
Ok(value)
|
||||||
},
|
}
|
||||||
None => Err(())
|
None => Err(()),
|
||||||
}
|
})?;
|
||||||
})?;
|
|
||||||
|
|
||||||
Ok(new_gatekeeper_amount)
|
Ok(new_gatekeeper_amount)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn accumulate_outgoing_imbalance(amount: &BalanceOf<T>) -> Result<BalanceOf<T>, ()> {
|
fn accumulate_outgoing_imbalance(amount: &BalanceOf<T>) -> Result<BalanceOf<T>, ()> {
|
||||||
let new_bridged_out_amount = BridgedImbalance::<T>::mutate(|bridged_imbalance| {
|
let new_bridged_out_amount = BridgedImbalance::<T>::mutate(|bridged_imbalance| {
|
||||||
match bridged_imbalance.bridged_out.checked_add(amount) {
|
match bridged_imbalance.bridged_out.checked_add(amount) {
|
||||||
Some(value) => {
|
Some(value) => {
|
||||||
(*bridged_imbalance).bridged_out = value;
|
(*bridged_imbalance).bridged_out = value;
|
||||||
Ok(value)
|
Ok(value)
|
||||||
},
|
}
|
||||||
None => Err(())
|
None => Err(()),
|
||||||
}
|
}
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
Ok(new_bridged_out_amount)
|
Ok(new_bridged_out_amount)
|
||||||
@ -717,8 +720,8 @@ impl<T: Config> NetworkDataMutateHandler<NetworkData, BalanceOf<T>> for Pallet<T
|
|||||||
Some(value) => {
|
Some(value) => {
|
||||||
(*bridged_imbalance).bridged_in = value;
|
(*bridged_imbalance).bridged_in = value;
|
||||||
Ok(value)
|
Ok(value)
|
||||||
},
|
}
|
||||||
None => Err(())
|
None => Err(()),
|
||||||
}
|
}
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
@ -731,7 +734,7 @@ impl<T: Config> NetworkDataMutateHandler<NetworkData, BalanceOf<T>> for Pallet<T
|
|||||||
Some(value) => {
|
Some(value) => {
|
||||||
*accumulated = value;
|
*accumulated = value;
|
||||||
Ok(value)
|
Ok(value)
|
||||||
},
|
}
|
||||||
None => Err(()),
|
None => Err(()),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
use crate::{self as ghost_networks};
|
use crate::{self as ghost_networks};
|
||||||
use frame_system::EnsureSignedBy;
|
|
||||||
use frame_support::{
|
use frame_support::{
|
||||||
construct_runtime, ord_parameter_types, parameter_types,
|
construct_runtime, ord_parameter_types, parameter_types,
|
||||||
traits::{ConstU128, ConstU32, Everything},
|
traits::{ConstU128, ConstU32, Everything},
|
||||||
};
|
};
|
||||||
|
use frame_system::EnsureSignedBy;
|
||||||
pub use primitives::{
|
pub use primitives::{
|
||||||
AccountId, Balance, Nonce, BlockNumber, Hash,
|
AccountId, Balance, BlockNumber, FreezeIdentifier, Hash, Nonce, ReserveIdentifier,
|
||||||
ReserveIdentifier, FreezeIdentifier,
|
|
||||||
};
|
};
|
||||||
use sp_runtime::{
|
use sp_runtime::{
|
||||||
curve::PiecewiseLinear,
|
curve::PiecewiseLinear,
|
||||||
traits::{AccountIdLookup, BlakeTwo256},
|
traits::{AccountIdLookup, BlakeTwo256},
|
||||||
BuildStorage
|
BuildStorage,
|
||||||
};
|
};
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@ -96,9 +95,9 @@ impl ghost_networks::Config for Test {
|
|||||||
type RuntimeEvent = RuntimeEvent;
|
type RuntimeEvent = RuntimeEvent;
|
||||||
type Currency = Balances;
|
type Currency = Balances;
|
||||||
type NetworkId = u32;
|
type NetworkId = u32;
|
||||||
type RegisterOrigin = EnsureSignedBy::<RegistererAccount, AccountId>;
|
type RegisterOrigin = EnsureSignedBy<RegistererAccount, AccountId>;
|
||||||
type UpdateOrigin = EnsureSignedBy::<UpdaterAccount, AccountId>;
|
type UpdateOrigin = EnsureSignedBy<UpdaterAccount, AccountId>;
|
||||||
type RemoveOrigin = EnsureSignedBy::<RemoverAccount, AccountId>;
|
type RemoveOrigin = EnsureSignedBy<RemoverAccount, AccountId>;
|
||||||
type WeightInfo = crate::weights::SubstrateWeight<Test>;
|
type WeightInfo = crate::weights::SubstrateWeight<Test>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user