diff --git a/Cargo.lock b/Cargo.lock
index dc4d160cdd..72201b4676 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4902,7 +4902,6 @@ dependencies = [
"frame-system",
"parity-scale-codec",
"serde",
- "sp-application-crypto",
"sp-core",
"sp-runtime",
"sp-std",
diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml
index f4f06cd169..8502d95008 100644
--- a/node/primitives/Cargo.toml
+++ b/node/primitives/Cargo.toml
@@ -9,7 +9,6 @@ bstringify = "0.1.2"
codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] }
serde = { version = "1.0.124", optional = true }
frame-system = { version = "3.0.0", default-features = false }
-sp-application-crypto = { version = "3.0.0", default-features = false }
sp-core = { version = "3.0.0", default-features = false }
sp-runtime = { version = "3.0.0", default-features = false }
sp-std = { version = "3.0.0", default-features = false }
@@ -21,7 +20,6 @@ std = [
"codec/std",
"frame-system/std",
"serde",
- "sp-application-crypto/std",
"sp-core/std",
"sp-runtime/std",
"sp-std/std",
diff --git a/node/primitives/src/bridge.rs b/node/primitives/src/bridge.rs
new file mode 100644
index 0000000000..4a8ef4ad1a
--- /dev/null
+++ b/node/primitives/src/bridge.rs
@@ -0,0 +1,60 @@
+// This file is part of Bifrost.
+
+// Copyright (C) 2019-2021 Liebi Technologies (UK) Ltd.
+// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+use codec::{Decode, Encode};
+use sp_std::prelude::*;
+
+/// Blockchain types
+#[derive(PartialEq, Debug, Clone, Encode, Decode)]
+pub enum BlockchainType {
+ BIFROST,
+ EOS,
+ IOST,
+}
+
+impl Default for BlockchainType {
+ fn default() -> Self {
+ BlockchainType::BIFROST
+ }
+}
+
+/// Symbol type of bridge asset
+#[derive(Clone, Default, Encode, Decode)]
+pub struct BridgeAssetSymbol {
+ pub blockchain: BlockchainType,
+ pub symbol: Vec,
+ pub precision: Precision,
+}
+
+impl BridgeAssetSymbol {
+ pub fn new(blockchain: BlockchainType, symbol: Vec, precision: Precision) -> Self {
+ BridgeAssetSymbol { blockchain, symbol, precision }
+ }
+}
+
+/// Bridge asset type
+#[derive(Clone, Default, Encode, Decode)]
+pub struct BridgeAssetBalance {
+ pub symbol: BridgeAssetSymbol,
+ pub amount: Balance,
+ pub memo: Vec,
+ // store the account who send transaction to EOS
+ pub from: AccountId,
+ // which token type is sent to EOS
+ pub asset_id: AssetId,
+}
diff --git a/node/primitives/src/currency.rs b/node/primitives/src/currency.rs
index edfdec4ca3..3b77216b22 100644
--- a/node/primitives/src/currency.rs
+++ b/node/primitives/src/currency.rs
@@ -36,10 +36,10 @@ use crate::{
};
macro_rules! create_currency_id {
- ($(#[$meta:meta])*
+ ($(#[$meta:meta])*
$vis:vis enum TokenSymbol {
- $($(#[$vmeta:meta])* $symbol:ident($name:expr, $deci:literal) = $val:literal,)*
- }) => {
+ $($(#[$vmeta:meta])* $symbol:ident($name:expr, $deci:literal) = $val:literal,)*
+ }) => {
$(#[$meta])*
$vis enum TokenSymbol {
$($(#[$vmeta])* $symbol = $val,)*
@@ -68,12 +68,12 @@ macro_rules! create_currency_id {
impl TokenInfo for CurrencyId {
// DATA LAYOUT
- //
- // Currency Discriminant: 1byte
- // TokenSymbol Discriminant: 1byte
- // ParaId: 2byte
- // LeasePeriod: 2byte
- // LeasePeriod: 2byte
+ //
+ // Currency Discriminant: 1byte
+ // TokenSymbol Discriminant: 1byte
+ // ParaId: 2byte
+ // LeasePeriod: 2byte
+ // LeasePeriod: 2byte
fn currency_id(&self) -> u64 {
let c_discr = self.discriminant() as u64;
@@ -86,7 +86,7 @@ macro_rules! create_currency_id {
| Self::VSBond(ts, ..) => ts as u8,
} as u64;
- let discr = (c_discr << 8) + t_discr;
+ let discr = (c_discr << 8) + t_discr;
match *self {
Self::Token(..)
@@ -112,7 +112,7 @@ macro_rules! create_currency_id {
(discr << 48) + (pid << 32) + (lp1 << 16) + lp2
}
- }
+ }
}
fn name(&self) -> &str {
diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs
index 287c95afd9..f2ffbd6caf 100644
--- a/node/primitives/src/lib.rs
+++ b/node/primitives/src/lib.rs
@@ -20,27 +20,21 @@
#![cfg_attr(not(feature = "std"), no_std)]
-use core::convert::TryFrom;
-
-use codec::{Decode, Encode};
-#[cfg(feature = "std")]
-use serde::{Deserialize, Serialize};
use sp_runtime::{
generic,
traits::{BlakeTwo256, IdentifyAccount, Verify},
- MultiSignature, OpaqueExtrinsic, RuntimeDebug, SaturatedConversion,
+ MultiSignature, OpaqueExtrinsic,
};
-use sp_std::{convert::Into, prelude::*};
+mod bridge;
mod currency;
+mod tests;
pub mod traits;
pub use crate::{
+ bridge::*,
currency::{CurrencyId, TokenSymbol},
- traits::{
- AssetReward, BridgeAssetFrom, BridgeAssetTo, CurrencyIdExt, MinterRewardExt, RewardHandler,
- RewardTrait, TokenInfo, VtokenMintExt,
- },
+ traits::*,
};
/// An index to a block.
@@ -121,452 +115,8 @@ pub type EraId = u32;
/// Signed version of Balance
pub type Amount = i128;
-/// The balance of zenlink asset
-pub type TokenBalance = u128;
-
-/// The pair id of the zenlink dex.
-pub type PairId = u32;
-
/// Parachain Id
pub type ParaId = u32;
/// The measurement type for counting lease periods (generally the same as `BlockNumber`).
pub type LeasePeriod = BlockNumber;
-
-#[derive(Encode, Decode, Clone, Copy, Eq, PartialEq, Debug)]
-#[cfg_attr(feature = "std", derive(Deserialize, Serialize))]
-pub enum TokenType {
- /// Native token, only used by BNC
- Native,
- /// Stable token
- Stable,
- /// Origin token from bridge
- Token,
- // v-token of origin token
- VToken,
-}
-
-impl Default for TokenType {
- fn default() -> Self {
- Self::Native
- }
-}
-
-impl TokenType {
- pub fn is_base_token(&self) -> bool {
- *self == TokenType::Native
- }
-
- pub fn is_stable(&self) -> bool {
- *self == TokenType::Stable
- }
-
- pub fn is_token(&self) -> bool {
- *self == TokenType::Token
- }
-
- pub fn is_v_token(&self) -> bool {
- *self == TokenType::VToken
- }
-}
-
-/// Token struct
-#[derive(Encode, Decode, Default, Clone, Eq, PartialEq, Debug)]
-#[cfg_attr(feature = "std", derive(serde::Deserialize, serde::Serialize))]
-pub struct Token {
- pub symbol: Vec,
- pub precision: u16,
- pub total_supply: Balance,
- pub token_type: TokenType,
- pub pair: Option,
-}
-
-impl Token {
- pub fn new(
- symbol: Vec,
- precision: u16,
- total_supply: Balance,
- token_type: TokenType,
- ) -> Self {
- Self { symbol, precision, total_supply, token_type, pair: None }
- }
-
- pub fn add_pair(&mut self, asset_id: AssetId) {
- self.pair = Some(asset_id);
- }
-}
-
-#[derive(Encode, Decode, Default, Clone, Eq, PartialEq, Debug)]
-#[cfg_attr(feature = "std", derive(serde::Deserialize, serde::Serialize))]
-pub struct AccountAsset {
- pub balance: Balance,
- pub locked: Balance,
- pub available: Balance,
- pub cost: Balance,
- pub income: Balance,
-}
-
-#[derive(Encode, Decode, Default, Clone, Eq, PartialEq, Debug)]
-#[cfg_attr(feature = "std", derive(serde::Deserialize, serde::Serialize))]
-pub struct VtokenPool {
- /// A pool that hold the total amount of token minted to vtoken
- pub token_pool: Balance,
- /// A pool that hold the total amount of vtoken minted from token
- pub vtoken_pool: Balance,
- /// Total reward for current mint duration
- pub current_reward: Balance,
- /// Total reward for next mint duration
- pub pending_reward: Balance,
-}
-
-impl VtokenPool {
- pub fn new(token_amount: Balance, vtoken_amount: Balance) -> Self {
- Self { token_pool: token_amount, vtoken_pool: vtoken_amount, ..Default::default() }
- }
-
- pub fn new_round(&mut self) {
- self.current_reward = self.pending_reward;
- self.pending_reward = Default::default();
- }
-}
-
-/// Blockchain types
-#[derive(PartialEq, Debug, Clone, Encode, Decode)]
-pub enum BlockchainType {
- BIFROST,
- EOS,
- IOST,
-}
-
-impl Default for BlockchainType {
- fn default() -> Self {
- BlockchainType::BIFROST
- }
-}
-
-/// Symbol type of bridge asset
-#[derive(Clone, Default, Encode, Decode)]
-pub struct BridgeAssetSymbol {
- pub blockchain: BlockchainType,
- pub symbol: Vec,
- pub precision: Precision,
-}
-
-impl BridgeAssetSymbol {
- pub fn new(blockchain: BlockchainType, symbol: Vec, precision: Precision) -> Self {
- BridgeAssetSymbol { blockchain, symbol, precision }
- }
-}
-
-/// Bridge asset type
-#[derive(Clone, Default, Encode, Decode)]
-pub struct BridgeAssetBalance {
- pub symbol: BridgeAssetSymbol,
- pub amount: Balance,
- pub memo: Vec,
- // store the account who send transaction to EOS
- pub from: AccountId,
- // which token type is sent to EOS
- pub asset_id: AssetId,
-}
-
-/// Zenlink type
-#[derive(Encode, Decode, Eq, PartialEq, Clone, RuntimeDebug)]
-pub struct Pair {
- pub token_0: ZenlinkAssetId,
- pub token_1: ZenlinkAssetId,
-
- pub account: AccountId,
- pub total_liquidity: TokenBalance,
-}
-
-/// The id of Zenlink asset
-/// NativeCurrency is this parachain native currency.
-/// Other parachain's currency is represented by `ParaCurrency(u32)`, `u32` cast to the ParaId.
-#[derive(Encode, Decode, Eq, PartialEq, Copy, Clone, RuntimeDebug, PartialOrd, Ord)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
-#[cfg_attr(feature = "std", serde(rename_all = "camelCase"))]
-pub enum ZenlinkAssetId {
- NativeCurrency,
- ParaCurrency(u32),
-}
-
-impl ZenlinkAssetId {
- pub fn is_para_currency(&self) -> bool {
- matches!(self, ZenlinkAssetId::ParaCurrency(_))
- }
-}
-
-impl From for ZenlinkAssetId {
- fn from(id: u32) -> Self {
- ZenlinkAssetId::ParaCurrency(id)
- }
-}
-
-impl From for ZenlinkAssetId {
- fn from(id: u128) -> Self {
- ZenlinkAssetId::ParaCurrency(id as u32)
- }
-}
-
-impl From for ZenlinkAssetId {
- fn from(id: CurrencyId) -> Self {
- if id.is_native() {
- ZenlinkAssetId::NativeCurrency
- } else {
- match id {
- CurrencyId::Token(some_id) => {
- let u32_id = some_id as u32;
- ZenlinkAssetId::ParaCurrency(u32_id)
- }
- _ => todo!("Not support now."),
- }
- }
- }
-}
-
-impl Into for ZenlinkAssetId {
- fn into(self) -> CurrencyId {
- match self {
- ZenlinkAssetId::NativeCurrency => CurrencyId::Native(TokenSymbol::ASG),
- ZenlinkAssetId::ParaCurrency(some_id) => {
- let id: u8 = some_id.saturated_into();
- CurrencyId::Token(TokenSymbol::try_from(id).unwrap())
- }
- }
- }
-}
-
-#[derive(Encode, Decode, Clone, Copy, Debug, PartialEq)]
-#[cfg_attr(feature = "std", derive(serde::Deserialize, serde::Serialize))]
-#[non_exhaustive]
-pub enum StorageVersion {
- V0,
- V1,
- V2,
- V3,
-}
-
-impl Default for StorageVersion {
- fn default() -> Self {
- Self::V0
- }
-}
-
-/// App-specific crypto used for reporting equivocation/misbehavior in BABE and
-/// GRANDPA. Any rewards for misbehavior reporting will be paid out to this
-/// account.
-pub mod report {
- use frame_system::offchain::AppCrypto;
- use sp_core::crypto::{key_types, KeyTypeId};
-
- use super::{Signature, Verify};
-
- /// Key type for the reporting module. Used for reporting BABE and GRANDPA
- /// equivocations.
- pub const KEY_TYPE: KeyTypeId = key_types::REPORTING;
-
- mod app {
- use sp_application_crypto::{app_crypto, sr25519};
- app_crypto!(sr25519, super::KEY_TYPE);
- }
-
- /// Identity of the equivocation/misbehavior reporter.
- pub type ReporterId = app::Public;
-
- /// An `AppCrypto` type to allow submitting signed transactions using the reporting
- /// application key as signer.
- pub struct ReporterAppCrypto;
-
- impl AppCrypto<::Signer, Signature> for ReporterAppCrypto {
- type GenericPublic = sp_core::sr25519::Public;
- type GenericSignature = sp_core::sr25519::Signature;
- type RuntimeAppPublic = ReporterId;
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn currency_id_from_string_should_work() {
- let currency_id = CurrencyId::try_from("DOT".as_bytes().to_vec());
- assert!(currency_id.is_ok());
- assert_eq!(currency_id.unwrap(), CurrencyId::Token(TokenSymbol::DOT));
- }
-
- #[test]
- fn currency_id_to_u64_should_work() {
- let e00 = CurrencyId::Token(TokenSymbol::ASG);
- let e01 = CurrencyId::Token(TokenSymbol::BNC);
- let e02 = CurrencyId::Token(TokenSymbol::AUSD);
- let e03 = CurrencyId::Token(TokenSymbol::DOT);
- let e04 = CurrencyId::Token(TokenSymbol::KSM);
- let e05 = CurrencyId::Token(TokenSymbol::ETH);
-
- assert_eq!(0x0000_0000_0000_0000, e00.currency_id());
- assert_eq!(0x0001_0000_0000_0000, e01.currency_id());
- assert_eq!(0x0002_0000_0000_0000, e02.currency_id());
- assert_eq!(0x0003_0000_0000_0000, e03.currency_id());
- assert_eq!(0x0004_0000_0000_0000, e04.currency_id());
- assert_eq!(0x0005_0000_0000_0000, e05.currency_id());
-
- let e10 = CurrencyId::VToken(TokenSymbol::ASG);
- let e11 = CurrencyId::VToken(TokenSymbol::BNC);
- let e12 = CurrencyId::VToken(TokenSymbol::AUSD);
- let e13 = CurrencyId::VToken(TokenSymbol::DOT);
- let e14 = CurrencyId::VToken(TokenSymbol::KSM);
- let e15 = CurrencyId::VToken(TokenSymbol::ETH);
-
- assert_eq!(0x0100_0000_0000_0000, e10.currency_id());
- assert_eq!(0x0101_0000_0000_0000, e11.currency_id());
- assert_eq!(0x0102_0000_0000_0000, e12.currency_id());
- assert_eq!(0x0103_0000_0000_0000, e13.currency_id());
- assert_eq!(0x0104_0000_0000_0000, e14.currency_id());
- assert_eq!(0x0105_0000_0000_0000, e15.currency_id());
-
- let e20 = CurrencyId::Native(TokenSymbol::ASG);
- let e21 = CurrencyId::Native(TokenSymbol::BNC);
- let e22 = CurrencyId::Native(TokenSymbol::AUSD);
- let e23 = CurrencyId::Native(TokenSymbol::DOT);
- let e24 = CurrencyId::Native(TokenSymbol::KSM);
- let e25 = CurrencyId::Native(TokenSymbol::ETH);
-
- assert_eq!(0x0200_0000_0000_0000, e20.currency_id());
- assert_eq!(0x0201_0000_0000_0000, e21.currency_id());
- assert_eq!(0x0202_0000_0000_0000, e22.currency_id());
- assert_eq!(0x0203_0000_0000_0000, e23.currency_id());
- assert_eq!(0x0204_0000_0000_0000, e24.currency_id());
- assert_eq!(0x0205_0000_0000_0000, e25.currency_id());
-
- let e30 = CurrencyId::Stable(TokenSymbol::ASG);
- let e31 = CurrencyId::Stable(TokenSymbol::BNC);
- let e32 = CurrencyId::Stable(TokenSymbol::AUSD);
- let e33 = CurrencyId::Stable(TokenSymbol::DOT);
- let e34 = CurrencyId::Stable(TokenSymbol::KSM);
- let e35 = CurrencyId::Stable(TokenSymbol::ETH);
-
- assert_eq!(0x0300_0000_0000_0000, e30.currency_id());
- assert_eq!(0x0301_0000_0000_0000, e31.currency_id());
- assert_eq!(0x0302_0000_0000_0000, e32.currency_id());
- assert_eq!(0x0303_0000_0000_0000, e33.currency_id());
- assert_eq!(0x0304_0000_0000_0000, e34.currency_id());
- assert_eq!(0x0305_0000_0000_0000, e35.currency_id());
-
- let e40 = CurrencyId::VSToken(TokenSymbol::ASG);
- let e41 = CurrencyId::VSToken(TokenSymbol::BNC);
- let e42 = CurrencyId::VSToken(TokenSymbol::AUSD);
- let e43 = CurrencyId::VSToken(TokenSymbol::DOT);
- let e44 = CurrencyId::VSToken(TokenSymbol::KSM);
- let e45 = CurrencyId::VSToken(TokenSymbol::ETH);
-
- assert_eq!(0x0400_0000_0000_0000, e40.currency_id());
- assert_eq!(0x0401_0000_0000_0000, e41.currency_id());
- assert_eq!(0x0402_0000_0000_0000, e42.currency_id());
- assert_eq!(0x0403_0000_0000_0000, e43.currency_id());
- assert_eq!(0x0404_0000_0000_0000, e44.currency_id());
- assert_eq!(0x0405_0000_0000_0000, e45.currency_id());
-
- let e50 = CurrencyId::VSBond(TokenSymbol::ASG, 0x07d0, 0x0000, 0x000f);
- let e51 = CurrencyId::VSBond(TokenSymbol::BNC, 0x07d1, 0x000f, 0x001f);
- let e52 = CurrencyId::VSBond(TokenSymbol::AUSD, 0x07d2, 0x001f, 0x002f);
- 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);
-
- assert_eq!(0x0500_07d0_0000_000f, e50.currency_id());
- assert_eq!(0x0501_07d1_000f_001f, e51.currency_id());
- assert_eq!(0x0502_07d2_001f_002f, e52.currency_id());
- assert_eq!(0x0503_07d3_002f_003f, e53.currency_id());
- assert_eq!(0x0504_07d4_003f_004f, e54.currency_id());
- assert_eq!(0x0505_07d5_004f_005f, e55.currency_id());
- }
-
- #[test]
- fn u64_to_currency_id_should_work() {
- let e00 = CurrencyId::Token(TokenSymbol::ASG);
- let e01 = CurrencyId::Token(TokenSymbol::BNC);
- let e02 = CurrencyId::Token(TokenSymbol::AUSD);
- let e03 = CurrencyId::Token(TokenSymbol::DOT);
- let e04 = CurrencyId::Token(TokenSymbol::KSM);
- let e05 = CurrencyId::Token(TokenSymbol::ETH);
-
- assert_eq!(e00, CurrencyId::try_from(0x0000_0000_0000_0000).unwrap());
- assert_eq!(e01, CurrencyId::try_from(0x0001_0000_0000_0000).unwrap());
- assert_eq!(e02, CurrencyId::try_from(0x0002_0000_0000_0000).unwrap());
- assert_eq!(e03, CurrencyId::try_from(0x0003_0000_0000_0000).unwrap());
- assert_eq!(e04, CurrencyId::try_from(0x0004_0000_0000_0000).unwrap());
- assert_eq!(e05, CurrencyId::try_from(0x0005_0000_0000_0000).unwrap());
-
- let e10 = CurrencyId::VToken(TokenSymbol::ASG);
- let e11 = CurrencyId::VToken(TokenSymbol::BNC);
- let e12 = CurrencyId::VToken(TokenSymbol::AUSD);
- let e13 = CurrencyId::VToken(TokenSymbol::DOT);
- let e14 = CurrencyId::VToken(TokenSymbol::KSM);
- let e15 = CurrencyId::VToken(TokenSymbol::ETH);
-
- assert_eq!(e10, CurrencyId::try_from(0x0100_0000_0000_0000).unwrap());
- assert_eq!(e11, CurrencyId::try_from(0x0101_0000_0000_0000).unwrap());
- assert_eq!(e12, CurrencyId::try_from(0x0102_0000_0000_0000).unwrap());
- assert_eq!(e13, CurrencyId::try_from(0x0103_0000_0000_0000).unwrap());
- assert_eq!(e14, CurrencyId::try_from(0x0104_0000_0000_0000).unwrap());
- assert_eq!(e15, CurrencyId::try_from(0x0105_0000_0000_0000).unwrap());
-
- let e20 = CurrencyId::Native(TokenSymbol::ASG);
- let e21 = CurrencyId::Native(TokenSymbol::BNC);
- let e22 = CurrencyId::Native(TokenSymbol::AUSD);
- let e23 = CurrencyId::Native(TokenSymbol::DOT);
- let e24 = CurrencyId::Native(TokenSymbol::KSM);
- let e25 = CurrencyId::Native(TokenSymbol::ETH);
-
- assert_eq!(e20, CurrencyId::try_from(0x0200_0000_0000_0000).unwrap());
- assert_eq!(e21, CurrencyId::try_from(0x0201_0000_0000_0000).unwrap());
- assert_eq!(e22, CurrencyId::try_from(0x0202_0000_0000_0000).unwrap());
- assert_eq!(e23, CurrencyId::try_from(0x0203_0000_0000_0000).unwrap());
- assert_eq!(e24, CurrencyId::try_from(0x0204_0000_0000_0000).unwrap());
- assert_eq!(e25, CurrencyId::try_from(0x0205_0000_0000_0000).unwrap());
-
- let e30 = CurrencyId::Stable(TokenSymbol::ASG);
- let e31 = CurrencyId::Stable(TokenSymbol::BNC);
- let e32 = CurrencyId::Stable(TokenSymbol::AUSD);
- let e33 = CurrencyId::Stable(TokenSymbol::DOT);
- let e34 = CurrencyId::Stable(TokenSymbol::KSM);
- let e35 = CurrencyId::Stable(TokenSymbol::ETH);
-
- assert_eq!(e30, CurrencyId::try_from(0x0300_0000_0000_0000).unwrap());
- assert_eq!(e31, CurrencyId::try_from(0x0301_0000_0000_0000).unwrap());
- assert_eq!(e32, CurrencyId::try_from(0x0302_0000_0000_0000).unwrap());
- assert_eq!(e33, CurrencyId::try_from(0x0303_0000_0000_0000).unwrap());
- assert_eq!(e34, CurrencyId::try_from(0x0304_0000_0000_0000).unwrap());
- assert_eq!(e35, CurrencyId::try_from(0x0305_0000_0000_0000).unwrap());
-
- let e40 = CurrencyId::VSToken(TokenSymbol::ASG);
- let e41 = CurrencyId::VSToken(TokenSymbol::BNC);
- let e42 = CurrencyId::VSToken(TokenSymbol::AUSD);
- let e43 = CurrencyId::VSToken(TokenSymbol::DOT);
- let e44 = CurrencyId::VSToken(TokenSymbol::KSM);
- let e45 = CurrencyId::VSToken(TokenSymbol::ETH);
-
- assert_eq!(e40, CurrencyId::try_from(0x0400_0000_0000_0000).unwrap());
- assert_eq!(e41, CurrencyId::try_from(0x0401_0000_0000_0000).unwrap());
- assert_eq!(e42, CurrencyId::try_from(0x0402_0000_0000_0000).unwrap());
- assert_eq!(e43, CurrencyId::try_from(0x0403_0000_0000_0000).unwrap());
- assert_eq!(e44, CurrencyId::try_from(0x0404_0000_0000_0000).unwrap());
- assert_eq!(e45, CurrencyId::try_from(0x0405_0000_0000_0000).unwrap());
-
- let e50 = CurrencyId::VSBond(TokenSymbol::ASG, 0x07d0, 0x0000, 0x000f);
- let e51 = CurrencyId::VSBond(TokenSymbol::BNC, 0x07d1, 0x000f, 0x001f);
- let e52 = CurrencyId::VSBond(TokenSymbol::AUSD, 0x07d2, 0x001f, 0x002f);
- 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);
-
- assert_eq!(e50, CurrencyId::try_from(0x0500_07d0_0000_000f).unwrap());
- assert_eq!(e51, CurrencyId::try_from(0x0501_07d1_000f_001f).unwrap());
- assert_eq!(e52, CurrencyId::try_from(0x0502_07d2_001f_002f).unwrap());
- assert_eq!(e53, CurrencyId::try_from(0x0503_07d3_002f_003f).unwrap());
- assert_eq!(e54, CurrencyId::try_from(0x0504_07d4_003f_004f).unwrap());
- assert_eq!(e55, CurrencyId::try_from(0x0505_07d5_004f_005f).unwrap());
- }
-}
diff --git a/node/primitives/src/tests.rs b/node/primitives/src/tests.rs
new file mode 100644
index 0000000000..650c70f380
--- /dev/null
+++ b/node/primitives/src/tests.rs
@@ -0,0 +1,203 @@
+// This file is part of Bifrost.
+
+// Copyright (C) 2019-2021 Liebi Technologies (UK) Ltd.
+// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+#![cfg(test)]
+use core::convert::TryFrom;
+
+use super::*;
+
+#[test]
+fn currency_id_from_string_should_work() {
+ let currency_id = CurrencyId::try_from("DOT".as_bytes().to_vec());
+ assert!(currency_id.is_ok());
+ assert_eq!(currency_id.unwrap(), CurrencyId::Token(TokenSymbol::DOT));
+}
+
+#[test]
+fn currency_id_to_u64_should_work() {
+ let e00 = CurrencyId::Token(TokenSymbol::ASG);
+ let e01 = CurrencyId::Token(TokenSymbol::BNC);
+ let e02 = CurrencyId::Token(TokenSymbol::AUSD);
+ let e03 = CurrencyId::Token(TokenSymbol::DOT);
+ let e04 = CurrencyId::Token(TokenSymbol::KSM);
+ let e05 = CurrencyId::Token(TokenSymbol::ETH);
+
+ assert_eq!(0x0000_0000_0000_0000, e00.currency_id());
+ assert_eq!(0x0001_0000_0000_0000, e01.currency_id());
+ assert_eq!(0x0002_0000_0000_0000, e02.currency_id());
+ assert_eq!(0x0003_0000_0000_0000, e03.currency_id());
+ assert_eq!(0x0004_0000_0000_0000, e04.currency_id());
+ assert_eq!(0x0005_0000_0000_0000, e05.currency_id());
+
+ let e10 = CurrencyId::VToken(TokenSymbol::ASG);
+ let e11 = CurrencyId::VToken(TokenSymbol::BNC);
+ let e12 = CurrencyId::VToken(TokenSymbol::AUSD);
+ let e13 = CurrencyId::VToken(TokenSymbol::DOT);
+ let e14 = CurrencyId::VToken(TokenSymbol::KSM);
+ let e15 = CurrencyId::VToken(TokenSymbol::ETH);
+
+ assert_eq!(0x0100_0000_0000_0000, e10.currency_id());
+ assert_eq!(0x0101_0000_0000_0000, e11.currency_id());
+ assert_eq!(0x0102_0000_0000_0000, e12.currency_id());
+ assert_eq!(0x0103_0000_0000_0000, e13.currency_id());
+ assert_eq!(0x0104_0000_0000_0000, e14.currency_id());
+ assert_eq!(0x0105_0000_0000_0000, e15.currency_id());
+
+ let e20 = CurrencyId::Native(TokenSymbol::ASG);
+ let e21 = CurrencyId::Native(TokenSymbol::BNC);
+ let e22 = CurrencyId::Native(TokenSymbol::AUSD);
+ let e23 = CurrencyId::Native(TokenSymbol::DOT);
+ let e24 = CurrencyId::Native(TokenSymbol::KSM);
+ let e25 = CurrencyId::Native(TokenSymbol::ETH);
+
+ assert_eq!(0x0200_0000_0000_0000, e20.currency_id());
+ assert_eq!(0x0201_0000_0000_0000, e21.currency_id());
+ assert_eq!(0x0202_0000_0000_0000, e22.currency_id());
+ assert_eq!(0x0203_0000_0000_0000, e23.currency_id());
+ assert_eq!(0x0204_0000_0000_0000, e24.currency_id());
+ assert_eq!(0x0205_0000_0000_0000, e25.currency_id());
+
+ let e30 = CurrencyId::Stable(TokenSymbol::ASG);
+ let e31 = CurrencyId::Stable(TokenSymbol::BNC);
+ let e32 = CurrencyId::Stable(TokenSymbol::AUSD);
+ let e33 = CurrencyId::Stable(TokenSymbol::DOT);
+ let e34 = CurrencyId::Stable(TokenSymbol::KSM);
+ let e35 = CurrencyId::Stable(TokenSymbol::ETH);
+
+ assert_eq!(0x0300_0000_0000_0000, e30.currency_id());
+ assert_eq!(0x0301_0000_0000_0000, e31.currency_id());
+ assert_eq!(0x0302_0000_0000_0000, e32.currency_id());
+ assert_eq!(0x0303_0000_0000_0000, e33.currency_id());
+ assert_eq!(0x0304_0000_0000_0000, e34.currency_id());
+ assert_eq!(0x0305_0000_0000_0000, e35.currency_id());
+
+ let e40 = CurrencyId::VSToken(TokenSymbol::ASG);
+ let e41 = CurrencyId::VSToken(TokenSymbol::BNC);
+ let e42 = CurrencyId::VSToken(TokenSymbol::AUSD);
+ let e43 = CurrencyId::VSToken(TokenSymbol::DOT);
+ let e44 = CurrencyId::VSToken(TokenSymbol::KSM);
+ let e45 = CurrencyId::VSToken(TokenSymbol::ETH);
+
+ assert_eq!(0x0400_0000_0000_0000, e40.currency_id());
+ assert_eq!(0x0401_0000_0000_0000, e41.currency_id());
+ assert_eq!(0x0402_0000_0000_0000, e42.currency_id());
+ assert_eq!(0x0403_0000_0000_0000, e43.currency_id());
+ assert_eq!(0x0404_0000_0000_0000, e44.currency_id());
+ assert_eq!(0x0405_0000_0000_0000, e45.currency_id());
+
+ let e50 = CurrencyId::VSBond(TokenSymbol::ASG, 0x07d0, 0x0000, 0x000f);
+ let e51 = CurrencyId::VSBond(TokenSymbol::BNC, 0x07d1, 0x000f, 0x001f);
+ let e52 = CurrencyId::VSBond(TokenSymbol::AUSD, 0x07d2, 0x001f, 0x002f);
+ 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);
+
+ assert_eq!(0x0500_07d0_0000_000f, e50.currency_id());
+ assert_eq!(0x0501_07d1_000f_001f, e51.currency_id());
+ assert_eq!(0x0502_07d2_001f_002f, e52.currency_id());
+ assert_eq!(0x0503_07d3_002f_003f, e53.currency_id());
+ assert_eq!(0x0504_07d4_003f_004f, e54.currency_id());
+ assert_eq!(0x0505_07d5_004f_005f, e55.currency_id());
+}
+
+#[test]
+fn u64_to_currency_id_should_work() {
+ let e00 = CurrencyId::Token(TokenSymbol::ASG);
+ let e01 = CurrencyId::Token(TokenSymbol::BNC);
+ let e02 = CurrencyId::Token(TokenSymbol::AUSD);
+ let e03 = CurrencyId::Token(TokenSymbol::DOT);
+ let e04 = CurrencyId::Token(TokenSymbol::KSM);
+ let e05 = CurrencyId::Token(TokenSymbol::ETH);
+
+ assert_eq!(e00, CurrencyId::try_from(0x0000_0000_0000_0000).unwrap());
+ assert_eq!(e01, CurrencyId::try_from(0x0001_0000_0000_0000).unwrap());
+ assert_eq!(e02, CurrencyId::try_from(0x0002_0000_0000_0000).unwrap());
+ assert_eq!(e03, CurrencyId::try_from(0x0003_0000_0000_0000).unwrap());
+ assert_eq!(e04, CurrencyId::try_from(0x0004_0000_0000_0000).unwrap());
+ assert_eq!(e05, CurrencyId::try_from(0x0005_0000_0000_0000).unwrap());
+
+ let e10 = CurrencyId::VToken(TokenSymbol::ASG);
+ let e11 = CurrencyId::VToken(TokenSymbol::BNC);
+ let e12 = CurrencyId::VToken(TokenSymbol::AUSD);
+ let e13 = CurrencyId::VToken(TokenSymbol::DOT);
+ let e14 = CurrencyId::VToken(TokenSymbol::KSM);
+ let e15 = CurrencyId::VToken(TokenSymbol::ETH);
+
+ assert_eq!(e10, CurrencyId::try_from(0x0100_0000_0000_0000).unwrap());
+ assert_eq!(e11, CurrencyId::try_from(0x0101_0000_0000_0000).unwrap());
+ assert_eq!(e12, CurrencyId::try_from(0x0102_0000_0000_0000).unwrap());
+ assert_eq!(e13, CurrencyId::try_from(0x0103_0000_0000_0000).unwrap());
+ assert_eq!(e14, CurrencyId::try_from(0x0104_0000_0000_0000).unwrap());
+ assert_eq!(e15, CurrencyId::try_from(0x0105_0000_0000_0000).unwrap());
+
+ let e20 = CurrencyId::Native(TokenSymbol::ASG);
+ let e21 = CurrencyId::Native(TokenSymbol::BNC);
+ let e22 = CurrencyId::Native(TokenSymbol::AUSD);
+ let e23 = CurrencyId::Native(TokenSymbol::DOT);
+ let e24 = CurrencyId::Native(TokenSymbol::KSM);
+ let e25 = CurrencyId::Native(TokenSymbol::ETH);
+
+ assert_eq!(e20, CurrencyId::try_from(0x0200_0000_0000_0000).unwrap());
+ assert_eq!(e21, CurrencyId::try_from(0x0201_0000_0000_0000).unwrap());
+ assert_eq!(e22, CurrencyId::try_from(0x0202_0000_0000_0000).unwrap());
+ assert_eq!(e23, CurrencyId::try_from(0x0203_0000_0000_0000).unwrap());
+ assert_eq!(e24, CurrencyId::try_from(0x0204_0000_0000_0000).unwrap());
+ assert_eq!(e25, CurrencyId::try_from(0x0205_0000_0000_0000).unwrap());
+
+ let e30 = CurrencyId::Stable(TokenSymbol::ASG);
+ let e31 = CurrencyId::Stable(TokenSymbol::BNC);
+ let e32 = CurrencyId::Stable(TokenSymbol::AUSD);
+ let e33 = CurrencyId::Stable(TokenSymbol::DOT);
+ let e34 = CurrencyId::Stable(TokenSymbol::KSM);
+ let e35 = CurrencyId::Stable(TokenSymbol::ETH);
+
+ assert_eq!(e30, CurrencyId::try_from(0x0300_0000_0000_0000).unwrap());
+ assert_eq!(e31, CurrencyId::try_from(0x0301_0000_0000_0000).unwrap());
+ assert_eq!(e32, CurrencyId::try_from(0x0302_0000_0000_0000).unwrap());
+ assert_eq!(e33, CurrencyId::try_from(0x0303_0000_0000_0000).unwrap());
+ assert_eq!(e34, CurrencyId::try_from(0x0304_0000_0000_0000).unwrap());
+ assert_eq!(e35, CurrencyId::try_from(0x0305_0000_0000_0000).unwrap());
+
+ let e40 = CurrencyId::VSToken(TokenSymbol::ASG);
+ let e41 = CurrencyId::VSToken(TokenSymbol::BNC);
+ let e42 = CurrencyId::VSToken(TokenSymbol::AUSD);
+ let e43 = CurrencyId::VSToken(TokenSymbol::DOT);
+ let e44 = CurrencyId::VSToken(TokenSymbol::KSM);
+ let e45 = CurrencyId::VSToken(TokenSymbol::ETH);
+
+ assert_eq!(e40, CurrencyId::try_from(0x0400_0000_0000_0000).unwrap());
+ assert_eq!(e41, CurrencyId::try_from(0x0401_0000_0000_0000).unwrap());
+ assert_eq!(e42, CurrencyId::try_from(0x0402_0000_0000_0000).unwrap());
+ assert_eq!(e43, CurrencyId::try_from(0x0403_0000_0000_0000).unwrap());
+ assert_eq!(e44, CurrencyId::try_from(0x0404_0000_0000_0000).unwrap());
+ assert_eq!(e45, CurrencyId::try_from(0x0405_0000_0000_0000).unwrap());
+
+ let e50 = CurrencyId::VSBond(TokenSymbol::ASG, 0x07d0, 0x0000, 0x000f);
+ let e51 = CurrencyId::VSBond(TokenSymbol::BNC, 0x07d1, 0x000f, 0x001f);
+ let e52 = CurrencyId::VSBond(TokenSymbol::AUSD, 0x07d2, 0x001f, 0x002f);
+ 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);
+
+ assert_eq!(e50, CurrencyId::try_from(0x0500_07d0_0000_000f).unwrap());
+ assert_eq!(e51, CurrencyId::try_from(0x0501_07d1_000f_001f).unwrap());
+ assert_eq!(e52, CurrencyId::try_from(0x0502_07d2_001f_002f).unwrap());
+ assert_eq!(e53, CurrencyId::try_from(0x0503_07d3_002f_003f).unwrap());
+ assert_eq!(e54, CurrencyId::try_from(0x0504_07d4_003f_004f).unwrap());
+ assert_eq!(e55, CurrencyId::try_from(0x0505_07d5_004f_005f).unwrap());
+}
diff --git a/node/primitives/src/traits.rs b/node/primitives/src/traits.rs
index 4c65f7c521..b513bfb30f 100644
--- a/node/primitives/src/traits.rs
+++ b/node/primitives/src/traits.rs
@@ -27,7 +27,7 @@ use sp_runtime::{
};
use sp_std::{fmt::Debug, vec::Vec};
-use crate::{AccountAsset, BridgeAssetBalance, Token};
+use crate::BridgeAssetBalance;
pub trait TokenInfo {
fn currency_id(&self) -> u64;
@@ -48,55 +48,6 @@ pub trait CurrencyIdExt {
fn into(symbol: Self::TokenSymbol) -> Self;
}
-/// A handler to manipulate assets module
-pub trait AssetTrait
-where
- CurrencyId: CurrencyIdExt,
-{
- type Error;
- fn asset_issue(asset_id: CurrencyId, target: &AccountId, amount: Balance);
-
- fn asset_destroy(asset_id: CurrencyId, target: &AccountId, amount: Balance);
-
- fn asset_id_exists(who: &AccountId, symbol: &[u8], precision: u16) -> Option;
-
- fn token_exists(asset_id: CurrencyId) -> bool;
-
- fn get_account_asset(asset_id: CurrencyId, target: &AccountId) -> AccountAsset;
-
- fn get_token(asset_id: CurrencyId) -> Token;
-}
-
-/// Default impls
-impl AssetTrait for ()
-where
- CurrencyId: Default + CurrencyIdExt,
- AccountId: Default,
- Balance: Default,
-{
- type Error = core::convert::Infallible;
-
- fn asset_issue(_: CurrencyId, _: &AccountId, _: Balance) {}
-
- fn asset_destroy(_: CurrencyId, _: &AccountId, _: Balance) {}
-
- fn asset_id_exists(_: &AccountId, _: &[u8], _: u16) -> Option {
- Default::default()
- }
-
- fn token_exists(_: CurrencyId) -> bool {
- Default::default()
- }
-
- fn get_account_asset(_: CurrencyId, _: &AccountId) -> AccountAsset {
- Default::default()
- }
-
- fn get_token(_: CurrencyId) -> Token {
- Default::default()
- }
-}
-
pub trait TokenPriceHandler {
fn set_token_price(asset_id: CurrencyId, price: Price);
}
diff --git a/node/service/src/chain_spec/asgard.rs b/node/service/src/chain_spec/asgard.rs
index bf6e554628..021aa4b069 100644
--- a/node/service/src/chain_spec/asgard.rs
+++ b/node/service/src/chain_spec/asgard.rs
@@ -110,7 +110,6 @@ pub fn asgard_genesis(
],
reward_by_one_block: 5 * DOLLARS / 100,
round_index: 1,
- storage_version: Default::default(),
},
vtoken_mint: VtokenMintConfig {
pools: vec![
diff --git a/node/service/src/chain_spec/mod.rs b/node/service/src/chain_spec/mod.rs
index 3dfcc08dab..aa74a54baa 100644
--- a/node/service/src/chain_spec/mod.rs
+++ b/node/service/src/chain_spec/mod.rs
@@ -27,7 +27,7 @@ use std::{
};
use hex_literal::hex;
-pub use node_primitives::{AccountAsset, AccountId, Balance, Signature, VtokenPool};
+pub use node_primitives::{AccountId, Block, Signature};
use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};
use serde::{de::DeserializeOwned, Deserialize, Serialize};
use serde_json as json;
diff --git a/pallets/minter-reward/src/lib.rs b/pallets/minter-reward/src/lib.rs
index 648928f292..7aa2faccad 100644
--- a/pallets/minter-reward/src/lib.rs
+++ b/pallets/minter-reward/src/lib.rs
@@ -150,12 +150,6 @@ pub mod pallet {
pub(crate) type UserBNCReward =
StorageMap<_, Blake2_128Concat, T::AccountId, BalanceOf, ValueQuery>;
- /// Current storage version
- #[pallet::storage]
- #[pallet::getter(fn storage_version)]
- pub(crate) type StorageVersion =
- StorageValue<_, node_primitives::StorageVersion, ValueQuery>;
-
/// Record maximum vtoken value is minted and when minted
#[pallet::storage]
#[pallet::getter(fn current_round)]
@@ -267,7 +261,6 @@ pub mod pallet {
pub wegiths: Vec<(CurrencyIdOf, T::ShareWeight)>,
pub reward_by_one_block: BalanceOf,
pub round_index: u8,
- pub storage_version: node_primitives::StorageVersion,
}
#[cfg(feature = "std")]
impl Default for GenesisConfig {
@@ -276,7 +269,6 @@ pub mod pallet {
wegiths: Default::default(),
reward_by_one_block: Default::default(),
round_index: Default::default(),
- storage_version: Default::default(),
}
}
}
@@ -290,7 +282,6 @@ pub mod pallet {
CurrentRound::::put(self.round_index);
BNCRewardByOneBlock::::put(self.reward_by_one_block);
- StorageVersion::::put(self.storage_version);
}
}
diff --git a/pallets/minter-reward/src/mock.rs b/pallets/minter-reward/src/mock.rs
index 5cd05fb5e2..bb36e33e15 100644
--- a/pallets/minter-reward/src/mock.rs
+++ b/pallets/minter-reward/src/mock.rs
@@ -326,7 +326,6 @@ impl ExtBuilder {
],
reward_by_one_block: 300,
round_index: 1,
- storage_version: Default::default(),
}
.assimilate_storage(&mut t)
.unwrap();