diff --git a/node/primitives/src/currency.rs b/node/primitives/src/currency.rs index 41c097793d..4700cb114f 100644 --- a/node/primitives/src/currency.rs +++ b/node/primitives/src/currency.rs @@ -84,7 +84,7 @@ macro_rules! create_currency_id { }; let asset_index: u32 = ((_index?.0 << 8) & 0x0000_ff00) + (_index?.1 & 0x0000_00ff); if id.is_native() { - Ok(AssetId { chain_id: BIFROST_PARACHAIN_ID, asset_type: NATIVE, asset_index: asset_index }) + Ok(AssetId { chain_id: BIFROST_PARACHAIN_ID, asset_type: NATIVE, asset_index: 0 }) } else { Ok(AssetId { chain_id: BIFROST_PARACHAIN_ID, @@ -111,7 +111,13 @@ macro_rules! create_currency_id { _ => Err(()), }; match c_discr { - 0 => Ok(CurrencyId::Native(token_symbol?)), + 0 => { + if (_index == 0) { + Ok(CurrencyId::Native(TokenSymbol::ASG)) + } else { + Ok(CurrencyId::Native(TokenSymbol::BNC)) + } + }, 1 => Ok(CurrencyId::VToken(token_symbol?)), 2 => Ok(CurrencyId::Token(token_symbol?)), 3 => Ok(CurrencyId::Stable(token_symbol?)), @@ -260,6 +266,7 @@ create_currency_id! { DOT("Polkadot", 10) = 3, KSM("Kusama", 12) = 4, ETH("Ethereum", 18) = 5, + KAR("Karura", 12) = 6, } } diff --git a/node/primitives/src/tests.rs b/node/primitives/src/tests.rs index 3f253b7c3c..c2a6c7cd3f 100644 --- a/node/primitives/src/tests.rs +++ b/node/primitives/src/tests.rs @@ -36,6 +36,7 @@ fn currency_id_to_u64_should_work() { let e03 = CurrencyId::Native(TokenSymbol::DOT); let e04 = CurrencyId::Native(TokenSymbol::KSM); let e05 = CurrencyId::Native(TokenSymbol::ETH); + let e06 = CurrencyId::Native(TokenSymbol::KAR); assert_eq!(0x0000_0000_0000_0000, e00.currency_id()); assert_eq!(0x0000_0000_0000_0001, e01.currency_id()); @@ -43,6 +44,7 @@ fn currency_id_to_u64_should_work() { assert_eq!(0x0000_0000_0000_0003, e03.currency_id()); assert_eq!(0x0000_0000_0000_0004, e04.currency_id()); assert_eq!(0x0000_0000_0000_0005, e05.currency_id()); + assert_eq!(0x0000_0000_0000_0006, e06.currency_id()); let e10 = CurrencyId::VToken(TokenSymbol::ASG); let e11 = CurrencyId::VToken(TokenSymbol::BNC); @@ -50,6 +52,7 @@ fn currency_id_to_u64_should_work() { let e13 = CurrencyId::VToken(TokenSymbol::DOT); let e14 = CurrencyId::VToken(TokenSymbol::KSM); let e15 = CurrencyId::VToken(TokenSymbol::ETH); + let e16 = CurrencyId::VToken(TokenSymbol::KAR); assert_eq!(0x0000_0000_0000_0100, e10.currency_id()); assert_eq!(0x0000_0000_0000_0101, e11.currency_id()); @@ -57,6 +60,7 @@ fn currency_id_to_u64_should_work() { assert_eq!(0x0000_0000_0000_0103, e13.currency_id()); assert_eq!(0x0000_0000_0000_0104, e14.currency_id()); assert_eq!(0x0000_0000_0000_0105, e15.currency_id()); + assert_eq!(0x0000_0000_0000_0106, e16.currency_id()); let e20 = CurrencyId::Token(TokenSymbol::ASG); let e21 = CurrencyId::Token(TokenSymbol::BNC); @@ -64,6 +68,7 @@ fn currency_id_to_u64_should_work() { let e23 = CurrencyId::Token(TokenSymbol::DOT); let e24 = CurrencyId::Token(TokenSymbol::KSM); let e25 = CurrencyId::Token(TokenSymbol::ETH); + let e26 = CurrencyId::Token(TokenSymbol::KAR); assert_eq!(0x0000_0000_0000_0200, e20.currency_id()); assert_eq!(0x0000_0000_0000_0201, e21.currency_id()); @@ -71,6 +76,7 @@ fn currency_id_to_u64_should_work() { assert_eq!(0x0000_0000_0000_0203, e23.currency_id()); assert_eq!(0x0000_0000_0000_0204, e24.currency_id()); assert_eq!(0x0000_0000_0000_0205, e25.currency_id()); + assert_eq!(0x0000_0000_0000_0206, e26.currency_id()); let e30 = CurrencyId::Stable(TokenSymbol::ASG); let e31 = CurrencyId::Stable(TokenSymbol::BNC); @@ -78,6 +84,7 @@ fn currency_id_to_u64_should_work() { let e33 = CurrencyId::Stable(TokenSymbol::DOT); let e34 = CurrencyId::Stable(TokenSymbol::KSM); let e35 = CurrencyId::Stable(TokenSymbol::ETH); + let e36 = CurrencyId::Stable(TokenSymbol::KAR); assert_eq!(0x0000_0000_0000_0300, e30.currency_id()); assert_eq!(0x0000_0000_0000_0301, e31.currency_id()); @@ -85,6 +92,7 @@ fn currency_id_to_u64_should_work() { assert_eq!(0x0000_0000_0000_0303, e33.currency_id()); assert_eq!(0x0000_0000_0000_0304, e34.currency_id()); assert_eq!(0x0000_0000_0000_0305, e35.currency_id()); + assert_eq!(0x0000_0000_0000_0306, e36.currency_id()); let e40 = CurrencyId::VSToken(TokenSymbol::ASG); let e41 = CurrencyId::VSToken(TokenSymbol::BNC); @@ -92,6 +100,7 @@ fn currency_id_to_u64_should_work() { let e43 = CurrencyId::VSToken(TokenSymbol::DOT); let e44 = CurrencyId::VSToken(TokenSymbol::KSM); let e45 = CurrencyId::VSToken(TokenSymbol::ETH); + let e46 = CurrencyId::VSToken(TokenSymbol::KAR); assert_eq!(0x0000_0000_0000_0400, e40.currency_id()); assert_eq!(0x0000_0000_0000_0401, e41.currency_id()); @@ -99,6 +108,7 @@ fn currency_id_to_u64_should_work() { assert_eq!(0x0000_0000_0000_0403, e43.currency_id()); assert_eq!(0x0000_0000_0000_0404, e44.currency_id()); assert_eq!(0x0000_0000_0000_0405, e45.currency_id()); + assert_eq!(0x0000_0000_0000_0406, e46.currency_id()); let e50 = CurrencyId::VSBond(TokenSymbol::ASG, 0x07d0, 0x0000, 0x000f); let e51 = CurrencyId::VSBond(TokenSymbol::BNC, 0x07d1, 0x000f, 0x001f); @@ -106,6 +116,7 @@ fn currency_id_to_u64_should_work() { let e53 = CurrencyId::VSBond(TokenSymbol::DOT, 0x07d3, 0x002f, 0x003f); let e54 = CurrencyId::VSBond(TokenSymbol::KSM, 0x07d4, 0x003f, 0x004f); let e55 = CurrencyId::VSBond(TokenSymbol::ETH, 0x07d5, 0x004f, 0x005f); + let e56 = CurrencyId::VSBond(TokenSymbol::KAR, 0x07d6, 0x005f, 0x006f); assert_eq!(0x07d0_0000_000f_0500, e50.currency_id()); assert_eq!(0x07d1_000f_001f_0501, e51.currency_id()); @@ -113,10 +124,17 @@ fn currency_id_to_u64_should_work() { assert_eq!(0x07d3_002f_003f_0503, e53.currency_id()); assert_eq!(0x07d4_003f_004f_0504, e54.currency_id()); assert_eq!(0x07d5_004f_005f_0505, e55.currency_id()); + assert_eq!(0x07d6_005f_006f_0506, e56.currency_id()); - let e56 = CurrencyId::LPToken(TokenSymbol::ASG, 0u8, TokenSymbol::BNC, 0u8); + let e60 = CurrencyId::LPToken(TokenSymbol::ASG, 0u8, TokenSymbol::BNC, 0u8); + let e61 = CurrencyId::LPToken(TokenSymbol::KUSD, 0u8, TokenSymbol::DOT, 1u8); + let e62 = CurrencyId::LPToken(TokenSymbol::KSM, 1u8, TokenSymbol::ETH, 2u8); + let e63 = CurrencyId::LPToken(TokenSymbol::ASG, 3u8, TokenSymbol::KAR, 4u8); - assert_eq!(0x0000_0001_0000_0600, e56.currency_id()); + assert_eq!(0x0000_0001_0000_0600, e60.currency_id()); + assert_eq!(0x0000_0103_0002_0600, e61.currency_id()); + assert_eq!(0x0000_0205_0104_0600, e62.currency_id()); + assert_eq!(0x0000_0406_0300_0600, e63.currency_id()); } #[test] @@ -127,6 +145,7 @@ fn u64_to_currency_id_should_work() { let e03 = CurrencyId::Native(TokenSymbol::DOT); let e04 = CurrencyId::Native(TokenSymbol::KSM); let e05 = CurrencyId::Native(TokenSymbol::ETH); + let e06 = CurrencyId::Native(TokenSymbol::KAR); assert_eq!(e00, CurrencyId::try_from(0x0000_0000_0000_0000).unwrap()); @@ -135,6 +154,7 @@ fn u64_to_currency_id_should_work() { assert_eq!(e03, CurrencyId::try_from(0x0000_0000_0000_0003).unwrap()); assert_eq!(e04, CurrencyId::try_from(0x0000_0000_0000_0004).unwrap()); assert_eq!(e05, CurrencyId::try_from(0x0000_0000_0000_0005).unwrap()); + assert_eq!(e06, CurrencyId::try_from(0x0000_0000_0000_0006).unwrap()); let e10 = CurrencyId::VToken(TokenSymbol::ASG); let e11 = CurrencyId::VToken(TokenSymbol::BNC); @@ -142,6 +162,7 @@ fn u64_to_currency_id_should_work() { let e13 = CurrencyId::VToken(TokenSymbol::DOT); let e14 = CurrencyId::VToken(TokenSymbol::KSM); let e15 = CurrencyId::VToken(TokenSymbol::ETH); + let e16 = CurrencyId::VToken(TokenSymbol::KAR); assert_eq!(e10, CurrencyId::try_from(0x0000_0000_0000_0100).unwrap()); assert_eq!(e11, CurrencyId::try_from(0x0000_0000_0000_0101).unwrap()); @@ -149,6 +170,7 @@ fn u64_to_currency_id_should_work() { assert_eq!(e13, CurrencyId::try_from(0x0000_0000_0000_0103).unwrap()); assert_eq!(e14, CurrencyId::try_from(0x0000_0000_0000_0104).unwrap()); assert_eq!(e15, CurrencyId::try_from(0x0000_0000_0000_0105).unwrap()); + assert_eq!(e16, CurrencyId::try_from(0x0000_0000_0000_0106).unwrap()); let e20 = CurrencyId::Token(TokenSymbol::ASG); let e21 = CurrencyId::Token(TokenSymbol::BNC); @@ -156,6 +178,7 @@ fn u64_to_currency_id_should_work() { let e23 = CurrencyId::Token(TokenSymbol::DOT); let e24 = CurrencyId::Token(TokenSymbol::KSM); let e25 = CurrencyId::Token(TokenSymbol::ETH); + let e26 = CurrencyId::Token(TokenSymbol::KAR); assert_eq!(e20, CurrencyId::try_from(0x0000_0000_0000_0200).unwrap()); assert_eq!(e21, CurrencyId::try_from(0x0000_0000_0000_0201).unwrap()); @@ -163,6 +186,7 @@ fn u64_to_currency_id_should_work() { assert_eq!(e23, CurrencyId::try_from(0x0000_0000_0000_0203).unwrap()); assert_eq!(e24, CurrencyId::try_from(0x0000_0000_0000_0204).unwrap()); assert_eq!(e25, CurrencyId::try_from(0x0000_0000_0000_0205).unwrap()); + assert_eq!(e26, CurrencyId::try_from(0x0000_0000_0000_0206).unwrap()); let e30 = CurrencyId::Stable(TokenSymbol::ASG); let e31 = CurrencyId::Stable(TokenSymbol::BNC); @@ -170,6 +194,7 @@ fn u64_to_currency_id_should_work() { let e33 = CurrencyId::Stable(TokenSymbol::DOT); let e34 = CurrencyId::Stable(TokenSymbol::KSM); let e35 = CurrencyId::Stable(TokenSymbol::ETH); + let e36 = CurrencyId::Stable(TokenSymbol::KAR); assert_eq!(e30, CurrencyId::try_from(0x0000_0000_0000_0300).unwrap()); assert_eq!(e31, CurrencyId::try_from(0x0000_0000_0000_0301).unwrap()); @@ -177,6 +202,7 @@ fn u64_to_currency_id_should_work() { assert_eq!(e33, CurrencyId::try_from(0x0000_0000_0000_0303).unwrap()); assert_eq!(e34, CurrencyId::try_from(0x0000_0000_0000_0304).unwrap()); assert_eq!(e35, CurrencyId::try_from(0x0000_0000_0000_0305).unwrap()); + assert_eq!(e36, CurrencyId::try_from(0x0000_0000_0000_0306).unwrap()); let e40 = CurrencyId::VSToken(TokenSymbol::ASG); let e41 = CurrencyId::VSToken(TokenSymbol::BNC); @@ -184,6 +210,7 @@ fn u64_to_currency_id_should_work() { let e43 = CurrencyId::VSToken(TokenSymbol::DOT); let e44 = CurrencyId::VSToken(TokenSymbol::KSM); let e45 = CurrencyId::VSToken(TokenSymbol::ETH); + let e46 = CurrencyId::VSToken(TokenSymbol::KAR); assert_eq!(e40, CurrencyId::try_from(0x0000_0000_0000_0400).unwrap()); assert_eq!(e41, CurrencyId::try_from(0x0000_0000_0000_0401).unwrap()); @@ -191,6 +218,7 @@ fn u64_to_currency_id_should_work() { assert_eq!(e43, CurrencyId::try_from(0x0000_0000_0000_0403).unwrap()); assert_eq!(e44, CurrencyId::try_from(0x0000_0000_0000_0404).unwrap()); assert_eq!(e45, CurrencyId::try_from(0x0000_0000_0000_0405).unwrap()); + assert_eq!(e46, CurrencyId::try_from(0x0000_0000_0000_0406).unwrap()); let e50 = CurrencyId::VSBond(TokenSymbol::ASG, 0x07d0, 0x0000, 0x000f); let e51 = CurrencyId::VSBond(TokenSymbol::BNC, 0x07d1, 0x000f, 0x001f); @@ -198,6 +226,7 @@ fn u64_to_currency_id_should_work() { let e53 = CurrencyId::VSBond(TokenSymbol::DOT, 0x07d3, 0x002f, 0x003f); let e54 = CurrencyId::VSBond(TokenSymbol::KSM, 0x07d4, 0x003f, 0x004f); let e55 = CurrencyId::VSBond(TokenSymbol::ETH, 0x07d5, 0x004f, 0x005f); + let e56 = CurrencyId::VSBond(TokenSymbol::KAR, 0x07d6, 0x005f, 0x006f); assert_eq!(e50, CurrencyId::try_from(0x07d0_0000_000f_0500).unwrap()); assert_eq!(e51, CurrencyId::try_from(0x07d1_000f_001f_0501).unwrap()); @@ -205,8 +234,15 @@ fn u64_to_currency_id_should_work() { assert_eq!(e53, CurrencyId::try_from(0x07d3_002f_003f_0503).unwrap()); assert_eq!(e54, CurrencyId::try_from(0x07d4_003f_004f_0504).unwrap()); assert_eq!(e55, CurrencyId::try_from(0x07d5_004f_005f_0505).unwrap()); + assert_eq!(e56, CurrencyId::try_from(0x07d6_005f_006f_0506).unwrap()); - let e56 = CurrencyId::LPToken(TokenSymbol::ASG, 0u8, TokenSymbol::BNC, 0u8); + let e60 = CurrencyId::LPToken(TokenSymbol::ASG, 0u8, TokenSymbol::BNC, 0u8); + let e61 = CurrencyId::LPToken(TokenSymbol::KUSD, 0u8, TokenSymbol::DOT, 1u8); + let e62 = CurrencyId::LPToken(TokenSymbol::KSM, 1u8, TokenSymbol::ETH, 2u8); + let e63 = CurrencyId::LPToken(TokenSymbol::ASG, 3u8, TokenSymbol::KAR, 4u8); - assert_eq!(e56, CurrencyId::try_from(0x0000_0001_0000_0600).unwrap()); + assert_eq!(e60, CurrencyId::try_from(0x0000_0001_0000_0600).unwrap()); + assert_eq!(e61, CurrencyId::try_from(0x0000_0103_0002_0600).unwrap()); + assert_eq!(e62, CurrencyId::try_from(0x0000_0205_0104_0600).unwrap()); + assert_eq!(e63, CurrencyId::try_from(0x0000_0406_0300_0600).unwrap()); }