add specific network/coin/balance types (#619)

* add specific network/coin/balance types

* misc fixes

* fix clippy

* misc fixes

* fix pr comments

* Make halting for external networks

* fix encode/decode
This commit is contained in:
akildemir
2024-10-07 05:16:11 +03:00
committed by GitHub
parent d7ecab605e
commit 435f1d9ae1
91 changed files with 1536 additions and 1055 deletions

View File

@@ -9,12 +9,13 @@ use rand_core::{RngCore, OsRng};
use scale::Encode;
use serai_client::{
primitives::{
NetworkId, Coin, Amount, Balance, SeraiAddress, ExternalAddress, insecure_pair_from_name,
},
validator_sets::primitives::{Session, ValidatorSet},
in_instructions::primitives::Shorthand,
coins::primitives::{OutInstruction, OutInstructionWithBalance},
in_instructions::primitives::Shorthand,
primitives::{
insecure_pair_from_name, Amount, Balance, Coin, ExternalAddress, ExternalBalance, ExternalCoin,
SeraiAddress,
},
validator_sets::primitives::{ExternalValidatorSet, Session},
PairTrait, SeraiCoins,
};
@@ -199,7 +200,7 @@ async fn mint_and_burn_test() {
.await
.unwrap()
.validator_sets()
.keys(ValidatorSet { network, session: Session(0) })
.keys(ExternalValidatorSet { network, session: Session(0) })
.await
.unwrap()
{
@@ -224,7 +225,10 @@ async fn mint_and_burn_test() {
}
};
(key_pair(false, NetworkId::Bitcoin).await, key_pair(true, NetworkId::Monero).await)
(
key_pair(false, ExternalNetworkId::Bitcoin).await,
key_pair(true, ExternalNetworkId::Monero).await,
)
};
// Because the initial keys only become active when the network's time matches the Serai
@@ -439,8 +443,8 @@ async fn mint_and_burn_test() {
);
}
};
wait_for_batch(false, NetworkId::Bitcoin).await;
wait_for_batch(true, NetworkId::Monero).await;
wait_for_batch(false, ExternalNetworkId::Bitcoin).await;
wait_for_batch(true, ExternalNetworkId::Monero).await;
}
// TODO: Verify the mints
@@ -492,7 +496,7 @@ async fn mint_and_burn_test() {
let serai_pair = &serai_pair;
move |nonce, coin, amount, address| async move {
let out_instruction = OutInstructionWithBalance {
balance: Balance { coin, amount: Amount(amount) },
balance: ExternalBalance { coin, amount: Amount(amount) },
instruction: OutInstruction { address, data: None },
};
@@ -511,7 +515,7 @@ async fn mint_and_burn_test() {
#[allow(clippy::inconsistent_digit_grouping)]
burn(
0,
Coin::Bitcoin,
ExternalCoin::Bitcoin,
1_000_000_00,
ExternalAddress::new(
serai_client::networks::bitcoin::Address::new(bitcoin_addr.clone()).unwrap().into(),
@@ -522,7 +526,7 @@ async fn mint_and_burn_test() {
burn(
1,
Coin::Monero,
ExternalCoin::Monero,
1_000_000_000_000,
ExternalAddress::new(
serai_client::networks::monero::Address::new(monero_addr).unwrap().into(),

View File

@@ -3,7 +3,7 @@ use std::{sync::OnceLock, collections::HashMap};
use tokio::sync::Mutex;
use serai_client::primitives::NetworkId;
use serai_client::primitives::ExternalNetworkId;
use dockertest::{
LogAction, LogPolicy, LogSource, LogOptions, StartPolicy, TestBodySpecification,
@@ -56,15 +56,21 @@ pub(crate) async fn new_test(test_body: impl TestBody) {
let (coord_key, message_queue_keys, message_queue_composition) = message_queue_instance();
let (bitcoin_composition, bitcoin_port) = network_instance(NetworkId::Bitcoin);
let mut bitcoin_processor_composition =
processor_instance(NetworkId::Bitcoin, bitcoin_port, message_queue_keys[&NetworkId::Bitcoin]);
let (bitcoin_composition, bitcoin_port) = network_instance(ExternalNetworkId::Bitcoin);
let mut bitcoin_processor_composition = processor_instance(
ExternalNetworkId::Bitcoin,
bitcoin_port,
message_queue_keys[&ExternalNetworkId::Bitcoin],
);
assert_eq!(bitcoin_processor_composition.len(), 1);
let bitcoin_processor_composition = bitcoin_processor_composition.swap_remove(0);
let (monero_composition, monero_port) = network_instance(NetworkId::Monero);
let mut monero_processor_composition =
processor_instance(NetworkId::Monero, monero_port, message_queue_keys[&NetworkId::Monero]);
let (monero_composition, monero_port) = network_instance(ExternalNetworkId::Monero);
let mut monero_processor_composition = processor_instance(
ExternalNetworkId::Monero,
monero_port,
message_queue_keys[&ExternalNetworkId::Monero],
);
assert_eq!(monero_processor_composition.len(), 1);
let monero_processor_composition = monero_processor_composition.swap_remove(0);