mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-13 22:49:25 +00:00
update to develop latest
This commit is contained in:
@@ -56,6 +56,8 @@ exceptions = [
|
|||||||
{ allow = ["AGPL-3.0"], name = "serai-genesis-liquidity-pallet" },
|
{ allow = ["AGPL-3.0"], name = "serai-genesis-liquidity-pallet" },
|
||||||
{ allow = ["AGPL-3.0"], name = "serai-emissions-pallet" },
|
{ allow = ["AGPL-3.0"], name = "serai-emissions-pallet" },
|
||||||
|
|
||||||
|
{ allow = ["AGPL-3.0"], name = "serai-economic-security-pallet" },
|
||||||
|
|
||||||
{ allow = ["AGPL-3.0"], name = "serai-in-instructions-pallet" },
|
{ allow = ["AGPL-3.0"], name = "serai-in-instructions-pallet" },
|
||||||
|
|
||||||
{ allow = ["AGPL-3.0"], name = "serai-validator-sets-pallet" },
|
{ allow = ["AGPL-3.0"], name = "serai-validator-sets-pallet" },
|
||||||
|
|||||||
@@ -63,8 +63,7 @@ impl<'a> SeraiGenesisLiquidity<'a> {
|
|||||||
Ok(self.0.storage(PALLET, "Supply", coin).await?.unwrap_or(LiquidityAmount::zero()))
|
Ok(self.0.storage(PALLET, "Supply", coin).await?.unwrap_or(LiquidityAmount::zero()))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn genesis_complete(&self) -> Result<bool, SeraiError> {
|
pub async fn genesis_complete_block(&self) -> Result<Option<u64>, SeraiError> {
|
||||||
let result: Option<()> = self.0.storage(PALLET, "GenesisComplete", ()).await?;
|
self.0.storage(PALLET, "GenesisCompleteBlock", ()).await
|
||||||
Ok(result.is_some())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,18 +54,18 @@ async fn test_emissions(serai: Serai) {
|
|||||||
let (_, mut batch_ids) = set_up_genesis(&serai, &coins, &values).await;
|
let (_, mut batch_ids) = set_up_genesis(&serai, &coins, &values).await;
|
||||||
|
|
||||||
// wait until genesis is complete
|
// wait until genesis is complete
|
||||||
while !serai
|
let mut genesis_complete_block = None;
|
||||||
|
while genesis_complete_block.is_none() {
|
||||||
|
tokio::time::sleep(Duration::from_secs(1)).await;
|
||||||
|
genesis_complete_block = serai
|
||||||
.as_of_latest_finalized_block()
|
.as_of_latest_finalized_block()
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.genesis_liquidity()
|
.genesis_liquidity()
|
||||||
.genesis_complete()
|
.genesis_complete_block()
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap();
|
||||||
{
|
|
||||||
tokio::time::sleep(Duration::from_secs(1)).await;
|
|
||||||
}
|
}
|
||||||
let genesis_complete_block = serai.latest_finalized_block().await.unwrap().number();
|
|
||||||
|
|
||||||
for _ in 0 .. 3 {
|
for _ in 0 .. 3 {
|
||||||
// get current stakes
|
// get current stakes
|
||||||
@@ -99,7 +99,7 @@ async fn test_emissions(serai: Serai) {
|
|||||||
|
|
||||||
// calculate how much reward in this session
|
// calculate how much reward in this session
|
||||||
let reward_this_epoch =
|
let reward_this_epoch =
|
||||||
if change_block_number < (genesis_complete_block + FAST_EPOCH_INITIAL_PERIOD) {
|
if change_block_number < (genesis_complete_block.unwrap() + FAST_EPOCH_INITIAL_PERIOD) {
|
||||||
block_count * INITIAL_REWARD_PER_BLOCK
|
block_count * INITIAL_REWARD_PER_BLOCK
|
||||||
} else {
|
} else {
|
||||||
let blocks_until = SECURE_BY - change_block_number;
|
let blocks_until = SECURE_BY - change_block_number;
|
||||||
|
|||||||
@@ -24,14 +24,15 @@ pub async fn test_genesis_liquidity(serai: Serai) {
|
|||||||
let (accounts, _) = set_up_genesis(&serai, &coins, &values).await;
|
let (accounts, _) = set_up_genesis(&serai, &coins, &values).await;
|
||||||
|
|
||||||
// wait until genesis is complete
|
// wait until genesis is complete
|
||||||
while !serai
|
while serai
|
||||||
.as_of_latest_finalized_block()
|
.as_of_latest_finalized_block()
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.genesis_liquidity()
|
.genesis_liquidity()
|
||||||
.genesis_complete()
|
.genesis_complete_block()
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
.is_none()
|
||||||
{
|
{
|
||||||
tokio::time::sleep(Duration::from_secs(1)).await;
|
tokio::time::sleep(Duration::from_secs(1)).await;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|||||||
description = "Emissions pallet for Serai"
|
description = "Emissions pallet for Serai"
|
||||||
license = "AGPL-3.0-only"
|
license = "AGPL-3.0-only"
|
||||||
repository = "https://github.com/serai-dex/serai/tree/develop/substrate/emissions/pallet"
|
repository = "https://github.com/serai-dex/serai/tree/develop/substrate/emissions/pallet"
|
||||||
authors = ["Akil Demir <aeg_asd@hotmail.com>"]
|
authors = ["Akil Demir <akildemir72@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.77"
|
rust-version = "1.77"
|
||||||
|
|
||||||
|
|||||||
@@ -79,10 +79,6 @@ pub mod pallet {
|
|||||||
#[pallet::getter(fn session)]
|
#[pallet::getter(fn session)]
|
||||||
pub type CurrentSession<T: Config> = StorageMap<_, Identity, NetworkId, u32, ValueQuery>;
|
pub type CurrentSession<T: Config> = StorageMap<_, Identity, NetworkId, u32, ValueQuery>;
|
||||||
|
|
||||||
// TODO: Find a better place for this
|
|
||||||
#[pallet::storage]
|
|
||||||
pub(crate) type GenesisCompleteBlock<T: Config> = StorageValue<_, u64, OptionQuery>;
|
|
||||||
|
|
||||||
#[pallet::storage]
|
#[pallet::storage]
|
||||||
pub(crate) type LastSwapVolume<T: Config> = StorageMap<_, Identity, Coin, u64, OptionQuery>;
|
pub(crate) type LastSwapVolume<T: Config> = StorageMap<_, Identity, Coin, u64, OptionQuery>;
|
||||||
|
|
||||||
@@ -103,12 +99,7 @@ pub mod pallet {
|
|||||||
#[pallet::hooks]
|
#[pallet::hooks]
|
||||||
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
|
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
|
||||||
fn on_initialize(n: BlockNumberFor<T>) -> Weight {
|
fn on_initialize(n: BlockNumberFor<T>) -> Weight {
|
||||||
if GenesisCompleteBlock::<T>::get().is_none() &&
|
let genesis_ended = GenesisLiquidity::<T>::genesis_complete_block().is_some();
|
||||||
GenesisLiquidity::<T>::genesis_complete().is_some()
|
|
||||||
{
|
|
||||||
GenesisCompleteBlock::<T>::set(Some(n.saturated_into::<u64>()));
|
|
||||||
}
|
|
||||||
let genesis_ended = GenesisLiquidity::<T>::genesis_complete().is_some();
|
|
||||||
|
|
||||||
// check if we got a new session
|
// check if we got a new session
|
||||||
let mut session_changed = false;
|
let mut session_changed = false;
|
||||||
@@ -297,7 +288,7 @@ pub mod pallet {
|
|||||||
|
|
||||||
// TODO: we have the past session participants here in the emissions pallet so that we can
|
// TODO: we have the past session participants here in the emissions pallet so that we can
|
||||||
// distribute rewards to them in the next session. Ideally we should be able to fetch this
|
// distribute rewards to them in the next session. Ideally we should be able to fetch this
|
||||||
// information from valiadtor sets pallet.
|
// information from validator sets pallet.
|
||||||
Self::update_participants();
|
Self::update_participants();
|
||||||
Weight::zero() // TODO
|
Weight::zero() // TODO
|
||||||
}
|
}
|
||||||
@@ -316,7 +307,7 @@ pub mod pallet {
|
|||||||
#[cfg(not(feature = "fast-epoch"))]
|
#[cfg(not(feature = "fast-epoch"))]
|
||||||
let initial_period_duration = 2 * MONTHS;
|
let initial_period_duration = 2 * MONTHS;
|
||||||
|
|
||||||
let genesis_complete_block = GenesisCompleteBlock::<T>::get();
|
let genesis_complete_block = GenesisLiquidity::<T>::genesis_complete_block();
|
||||||
genesis_complete_block.is_some() &&
|
genesis_complete_block.is_some() &&
|
||||||
(n.saturated_into::<u64>() < (genesis_complete_block.unwrap() + initial_period_duration))
|
(n.saturated_into::<u64>() < (genesis_complete_block.unwrap() + initial_period_duration))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|||||||
description = "Serai emissions primitives"
|
description = "Serai emissions primitives"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/serai-dex/serai/tree/develop/substrate/emissions/primitives"
|
repository = "https://github.com/serai-dex/serai/tree/develop/substrate/emissions/primitives"
|
||||||
authors = ["Akil Demir <aeg_asd@hotmail.com>"]
|
authors = ["Akil Demir <akildemir72@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.77"
|
rust-version = "1.77"
|
||||||
|
|
||||||
|
|||||||
@@ -70,8 +70,8 @@ pub mod pallet {
|
|||||||
pub(crate) type Oracle<T: Config> = StorageMap<_, Identity, Coin, u64, OptionQuery>;
|
pub(crate) type Oracle<T: Config> = StorageMap<_, Identity, Coin, u64, OptionQuery>;
|
||||||
|
|
||||||
#[pallet::storage]
|
#[pallet::storage]
|
||||||
#[pallet::getter(fn genesis_complete)]
|
#[pallet::getter(fn genesis_complete_block)]
|
||||||
pub(crate) type GenesisComplete<T: Config> = StorageValue<_, (), OptionQuery>;
|
pub(crate) type GenesisCompleteBlock<T: Config> = StorageValue<_, u64, OptionQuery>;
|
||||||
|
|
||||||
#[pallet::hooks]
|
#[pallet::hooks]
|
||||||
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
|
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
|
||||||
@@ -85,7 +85,7 @@ pub mod pallet {
|
|||||||
// Distribute the genesis sri to pools after a month
|
// Distribute the genesis sri to pools after a month
|
||||||
if (n.saturated_into::<u64>() >= final_block) &&
|
if (n.saturated_into::<u64>() >= final_block) &&
|
||||||
Self::oraclization_is_done() &&
|
Self::oraclization_is_done() &&
|
||||||
GenesisComplete::<T>::get().is_none()
|
GenesisCompleteBlock::<T>::get().is_none()
|
||||||
{
|
{
|
||||||
// mint the SRI
|
// mint the SRI
|
||||||
Coins::<T>::mint(
|
Coins::<T>::mint(
|
||||||
@@ -165,7 +165,7 @@ pub mod pallet {
|
|||||||
assert_eq!(Coins::<T>::balance(GENESIS_LIQUIDITY_ACCOUNT.into(), coin), Amount(0));
|
assert_eq!(Coins::<T>::balance(GENESIS_LIQUIDITY_ACCOUNT.into(), coin), Amount(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
GenesisComplete::<T>::set(Some(()));
|
GenesisCompleteBlock::<T>::set(Some(n.saturated_into::<u64>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Weight::zero() // TODO
|
Weight::zero() // TODO
|
||||||
|
|||||||
Reference in New Issue
Block a user