2 Commits

Author SHA1 Message Date
akildemir
1ea3ee05c6 fix encode/decode 2024-10-04 13:19:26 +03:00
akildemir
43cdbb1bff Make halting for external networks 2024-10-04 13:19:17 +03:00
5 changed files with 11 additions and 14 deletions

View File

@@ -18,5 +18,5 @@ pub enum Call {
pub enum Event {
Batch { network: ExternalNetworkId, id: u32, block: BlockHash, instructions_hash: [u8; 32] },
InstructionFailure { network: ExternalNetworkId, id: u32, index: u32 },
Halt { network: NetworkId },
Halt { network: ExternalNetworkId },
}

View File

@@ -60,7 +60,7 @@ pub mod pallet {
pub enum Event<T: Config> {
Batch { network: ExternalNetworkId, id: u32, block: BlockHash, instructions_hash: [u8; 32] },
InstructionFailure { network: ExternalNetworkId, id: u32, index: u32 },
Halt { network: NetworkId },
Halt { network: ExternalNetworkId },
}
#[pallet::error]
@@ -86,7 +86,7 @@ pub mod pallet {
// Halted networks.
#[pallet::storage]
pub(crate) type Halted<T: Config> = StorageMap<_, Identity, NetworkId, (), OptionQuery>;
pub(crate) type Halted<T: Config> = StorageMap<_, Identity, ExternalNetworkId, (), OptionQuery>;
// The latest block a network has acknowledged as finalized
#[pallet::storage]
@@ -231,8 +231,7 @@ pub mod pallet {
Ok(())
}
pub fn halt(network: NetworkId) -> Result<(), DispatchError> {
// TODO: is it possible to halt serai network?
pub fn halt(network: ExternalNetworkId) -> Result<(), DispatchError> {
Halted::<T>::set(network, Some(()));
Self::deposit_event(Event::Halt { network });
Ok(())
@@ -325,7 +324,7 @@ pub mod pallet {
Err(InvalidTransaction::BadProof)?;
}
if Halted::<T>::contains_key(NetworkId::from(network)) {
if Halted::<T>::contains_key(network) {
Err(InvalidTransaction::Custom(1))?;
}

View File

@@ -95,7 +95,7 @@ impl Decode for NetworkId {
let kind = input.read_byte()?;
match kind {
0 => Ok(Self::Serai),
_ => Ok(ExternalNetworkId::decode(input)?.into()),
_ => Ok(ExternalNetworkId::decode(&mut [kind].as_slice())?.into()),
}
}
}
@@ -264,7 +264,7 @@ impl Decode for Coin {
let kind = input.read_byte()?;
match kind {
0 => Ok(Self::Serai),
_ => Ok(ExternalCoin::decode(input)?.into()),
_ => Ok(ExternalCoin::decode(&mut [kind].as_slice())?.into()),
}
}
}

View File

@@ -5,7 +5,7 @@
use scale::{Encode, Decode, MaxEncodedLen};
use scale_info::TypeInfo;
use serai_primitives::NetworkId;
use serai_primitives::ExternalNetworkId;
#[derive(Clone, Copy, PartialEq, Eq, Debug, Encode, Decode, MaxEncodedLen, TypeInfo)]
#[cfg_attr(feature = "std", derive(zeroize::Zeroize))]
@@ -13,5 +13,5 @@ use serai_primitives::NetworkId;
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum SignalId {
Retirement([u8; 32]),
Halt(NetworkId),
Halt(ExternalNetworkId),
}

View File

@@ -13,7 +13,7 @@ use serai_client::{
},
primitives::{
crypto::RuntimePublic, Amount, BlockHash, ExternalBalance, ExternalNetworkId, PublicKey,
SeraiAddress,
SeraiAddress, EXTERNAL_NETWORKS,
},
validator_sets::primitives::Session,
};
@@ -190,9 +190,7 @@ pub(crate) async fn substrate_block(
#[test]
fn batch_test() {
for network in
[ExternalNetworkId::Bitcoin, ExternalNetworkId::Ethereum, ExternalNetworkId::Monero]
{
for network in EXTERNAL_NETWORKS {
let (coordinators, test) = new_test(network);
test.run(|ops| async move {