Skip to content

Commit

Permalink
NetworkInfo WASM + add preview/preprod/sancho (#309)
Browse files Browse the repository at this point in the history
NetworkInfo WASM + add preview/preprod/sancho

Fixes #308
  • Loading branch information
rooooooooob authored Feb 8, 2024
1 parent 3f6abbf commit 34742b9
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 13 deletions.
18 changes: 10 additions & 8 deletions chain/rust/src/byron/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,14 +154,16 @@ impl AddressContent {

// mainnet is implied if omitted
let protocol_magic = self.byron_protocol_magic();
match protocol_magic {
magic if magic == NetworkInfo::mainnet().protocol_magic() => {
Ok(NetworkInfo::mainnet().network_id())
}
magic if magic == NetworkInfo::testnet().protocol_magic() => {
Ok(NetworkInfo::testnet().network_id())
}
_ => Err(ByronAddressError::UnknownNetwork(protocol_magic)),
if protocol_magic == NetworkInfo::mainnet().protocol_magic() {
Ok(NetworkInfo::mainnet().network_id())
} else if protocol_magic == NetworkInfo::testnet().protocol_magic()
|| protocol_magic == NetworkInfo::preprod().protocol_magic()
|| protocol_magic == NetworkInfo::preview().protocol_magic()
|| protocol_magic == NetworkInfo::sancho_testnet().protocol_magic()
{
Ok(NetworkInfo::testnet().network_id())
} else {
Err(ByronAddressError::UnknownNetwork(protocol_magic))
}
}

Expand Down
38 changes: 33 additions & 5 deletions chain/rust/src/genesis/network_info.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use crate::{byron::ProtocolMagic, plutus::CostModels};
use cml_core::{
network::{BYRON_MAINNET_NETWORK_MAGIC, BYRON_TESTNET_NETWORK_MAGIC},
network::{
BYRON_MAINNET_NETWORK_MAGIC, BYRON_TESTNET_NETWORK_MAGIC, PREPROD_NETWORK_MAGIC,
PREVIEW_NETWORK_MAGIC, SANCHO_TESTNET_NETWORK_MAGIC,
},
Int,
};

Expand All @@ -16,25 +19,50 @@ impl NetworkInfo {
protocol_magic,
}
}

pub fn network_id(&self) -> u8 {
self.network_id
}

pub fn protocol_magic(&self) -> ProtocolMagic {
self.protocol_magic
}

pub fn testnet() -> NetworkInfo {
NetworkInfo {
/// This is the old testnet - most likely you want to use preview()/preprod()
pub fn testnet() -> Self {
Self {
network_id: 0b0000,
protocol_magic: ProtocolMagic::from(BYRON_TESTNET_NETWORK_MAGIC),
}
}
pub fn mainnet() -> NetworkInfo {
NetworkInfo {

pub fn mainnet() -> Self {
Self {
network_id: 0b0001,
protocol_magic: ProtocolMagic::from(BYRON_MAINNET_NETWORK_MAGIC),
}
}

pub fn preview() -> Self {
Self {
network_id: 0b0000,
protocol_magic: ProtocolMagic::from(PREVIEW_NETWORK_MAGIC),
}
}

pub fn preprod() -> Self {
Self {
network_id: 0b0000,
protocol_magic: ProtocolMagic::from(PREPROD_NETWORK_MAGIC),
}
}

pub fn sancho_testnet() -> Self {
Self {
network_id: 0b0000,
protocol_magic: ProtocolMagic::from(SANCHO_TESTNET_NETWORK_MAGIC),
}
}
}

// TODO: https://github.com/dcSpark/cardano-multiplatform-lib/issues/92
Expand Down
1 change: 1 addition & 0 deletions chain/wasm/src/genesis/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub mod network_info;
45 changes: 45 additions & 0 deletions chain/wasm/src/genesis/network_info.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
use crate::byron::utils::ProtocolMagic;
use cml_core_wasm::impl_wasm_conversions;
use wasm_bindgen::prelude::wasm_bindgen;

#[wasm_bindgen]
pub struct NetworkInfo(cml_chain::genesis::network_info::NetworkInfo);

impl_wasm_conversions!(cml_chain::genesis::network_info::NetworkInfo, NetworkInfo);

#[wasm_bindgen]
impl NetworkInfo {
pub fn new(network_id: u8, protocol_magic: &ProtocolMagic) -> Self {
cml_chain::genesis::network_info::NetworkInfo::new(network_id, *protocol_magic.as_ref())
.into()
}

pub fn network_id(&self) -> u8 {
self.0.network_id()
}

pub fn protocol_magic(&self) -> ProtocolMagic {
self.0.protocol_magic().into()
}

/// This is the old testnet - most likely you want to use preview()/preprod()
pub fn testnet() -> Self {
cml_chain::genesis::network_info::NetworkInfo::testnet().into()
}

pub fn mainnet() -> Self {
cml_chain::genesis::network_info::NetworkInfo::mainnet().into()
}

pub fn preview() -> Self {
cml_chain::genesis::network_info::NetworkInfo::preview().into()
}

pub fn preprod() -> Self {
cml_chain::genesis::network_info::NetworkInfo::preprod().into()
}

pub fn sancho_testnet() -> Self {
cml_chain::genesis::network_info::NetworkInfo::sancho_testnet().into()
}
}
1 change: 1 addition & 0 deletions chain/wasm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ pub mod certs;
pub mod crypto;
pub mod deposit;
pub mod fees;
pub mod genesis;
pub mod governance;
pub mod json;
pub mod min_ada;
Expand Down
3 changes: 3 additions & 0 deletions core/rust/src/network.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ use std::io::{BufRead, Write};

pub static BYRON_MAINNET_NETWORK_MAGIC: u32 = 764824073;
pub static BYRON_TESTNET_NETWORK_MAGIC: u32 = 1097911063;
pub static SANCHO_TESTNET_NETWORK_MAGIC: u32 = 4;
pub static PREPROD_NETWORK_MAGIC: u32 = 1;
pub static PREVIEW_NETWORK_MAGIC: u32 = 2;

impl std::fmt::Display for ProtocolMagic {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
Expand Down

0 comments on commit 34742b9

Please sign in to comment.