From 4b7d8e1cfec5e890e457ca650828413c17f9469f Mon Sep 17 00:00:00 2001 From: 0xripleys <0xripleys@solend.fi> Date: Fri, 27 Sep 2024 16:05:47 +0800 Subject: [PATCH] update docs --- .../docs/sui-system/staking_pool.md | 9 +- .../docs/sui-system/validator.md | 118 +++++++++++++++++- .../docs/sui-system/validator_set.md | 2 +- .../packages_compiled/sui-system | Bin 43984 -> 44241 bytes crates/sui-framework/published_api.txt | 6 + 5 files changed, 129 insertions(+), 6 deletions(-) diff --git a/crates/sui-framework/docs/sui-system/staking_pool.md b/crates/sui-framework/docs/sui-system/staking_pool.md index 747c82c18161ae..f51eff50b2fa26 100644 --- a/crates/sui-framework/docs/sui-system/staking_pool.md +++ b/crates/sui-framework/docs/sui-system/staking_pool.md @@ -771,6 +771,12 @@ returns (principal_withdraw_amount, rewards_withdraw_amount) // 1. if the entire FungibleStakedSuiData supply is redeemed, how much sui should we receive? let total_sui_amount = get_sui_amount(&latest_exchange_rate, fungible_staked_sui_data_total_supply); + // min with total_sui_amount to prevent underflow + let fungible_staked_sui_data_principal_amount = std::u64::min( + fungible_staked_sui_data_principal_amount, + total_sui_amount + ); + // 2. how much do we need to withdraw from the rewards pool? let total_rewards = total_sui_amount - fungible_staked_sui_data_principal_amount; @@ -1377,9 +1383,6 @@ Returns true if the input staking pool is inactive. fungible_staked_sui.value = fungible_staked_sui.value - split_amount; - assert!(fungible_staked_sui.value >= MIN_STAKING_THRESHOLD, EStakedSuiBelowThreshold); - assert!(split_amount >= MIN_STAKING_THRESHOLD, EStakedSuiBelowThreshold); - FungibleStakedSui { id: object::new(ctx), pool_id: fungible_staked_sui.pool_id, diff --git a/crates/sui-framework/docs/sui-system/validator.md b/crates/sui-framework/docs/sui-system/validator.md index 54a3c6c86530c5..db50fa3400a9d6 100644 --- a/crates/sui-framework/docs/sui-system/validator.md +++ b/crates/sui-framework/docs/sui-system/validator.md @@ -8,6 +8,8 @@ title: Module `0x3::validator` - [Struct `Validator`](#0x3_validator_Validator) - [Struct `StakingRequestEvent`](#0x3_validator_StakingRequestEvent) - [Struct `UnstakingRequestEvent`](#0x3_validator_UnstakingRequestEvent) +- [Struct `ConvertingToFungibleStakedSuiEvent`](#0x3_validator_ConvertingToFungibleStakedSuiEvent) +- [Struct `RedeemingFungibleStakedSuiEvent`](#0x3_validator_RedeemingFungibleStakedSuiEvent) - [Constants](#@Constants_0) - [Function `new_metadata`](#0x3_validator_new_metadata) - [Function `new`](#0x3_validator_new) @@ -461,6 +463,92 @@ Event emitted when a new unstake request is received. + + + + +## Struct `ConvertingToFungibleStakedSuiEvent` + +Event emitted when a staked SUI is converted to a fungible staked SUI. + + +
struct ConvertingToFungibleStakedSuiEvent has copy, drop
+
+ + + +
+Fields + + +
+
+pool_id: object::ID +
+
+ +
+
+stake_activation_epoch: u64 +
+
+ +
+
+staked_sui_principal_amount: u64 +
+
+ +
+
+fungible_staked_sui_amount: u64 +
+
+ +
+
+ + +
+ + + +## Struct `RedeemingFungibleStakedSuiEvent` + +Event emitted when a fungible staked SUI is redeemed. + + +
struct RedeemingFungibleStakedSuiEvent has copy, drop
+
+ + + +
+Fields + + +
+
+pool_id: object::ID +
+
+ +
+
+fungible_staked_sui_amount: u64 +
+
+ +
+
+sui_amount: u64 +
+
+ +
+
+ +
@@ -942,7 +1030,21 @@ Request to add stake to the validator's staking pool, processed at the end of th staked_sui: StakedSui, ctx: &mut TxContext, ) : FungibleStakedSui { - self.staking_pool.convert_to_fungible_staked_sui(staked_sui, ctx) + let stake_activation_epoch = staked_sui.stake_activation_epoch(); + let staked_sui_principal_amount = staked_sui.staked_sui_amount(); + + let fungible_staked_sui = self.staking_pool.convert_to_fungible_staked_sui(staked_sui, ctx); + + event::emit( + ConvertingToFungibleStakedSuiEvent { + pool_id: self.staking_pool_id(), + stake_activation_epoch, + staked_sui_principal_amount, + fungible_staked_sui_amount: fungible_staked_sui.value(), + } + ); + + fungible_staked_sui } @@ -970,7 +1072,19 @@ Request to add stake to the validator's staking pool, processed at the end of th fungible_staked_sui: FungibleStakedSui, ctx: &TxContext, ) : Balance<SUI> { - self.staking_pool.redeem_fungible_staked_sui(fungible_staked_sui, ctx) + let fungible_staked_sui_amount = fungible_staked_sui.value(); + + let sui = self.staking_pool.redeem_fungible_staked_sui(fungible_staked_sui, ctx); + + event::emit( + RedeemingFungibleStakedSuiEvent { + pool_id: self.staking_pool_id(), + fungible_staked_sui_amount, + sui_amount: sui.value(), + } + ); + + sui } diff --git a/crates/sui-framework/docs/sui-system/validator_set.md b/crates/sui-framework/docs/sui-system/validator_set.md index 08d75126f194b4..5e38d48f25c0ca 100644 --- a/crates/sui-framework/docs/sui-system/validator_set.md +++ b/crates/sui-framework/docs/sui-system/validator_set.md @@ -976,7 +976,7 @@ the stake and any rewards corresponding to it will be immediately processed. let staking_pool_id = pool_id(&staked_sui); let validator = if (self.staking_pool_mappings.contains(staking_pool_id)) { // This is an active validator. - let validator_address = self.staking_pool_mappings[pool_id(&staked_sui)]; + let validator_address = self.staking_pool_mappings[staking_pool_id]; get_candidate_or_active_validator_mut(self, validator_address) } else { // This is an inactive pool. assert!(self.inactive_validators.contains(staking_pool_id), ENoPoolFound); diff --git a/crates/sui-framework/packages_compiled/sui-system b/crates/sui-framework/packages_compiled/sui-system index 0b3de9d8c8c5199ae66e1be4bc1e30adac18040e..2f5cc8064c3d9535e1ec7fc97f87d22e2eacf020 100644 GIT binary patch delta 2890 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 diff --git a/crates/sui-framework/published_api.txt b/crates/sui-framework/published_api.txt index 8dba844c75cc18..e6d0acfbb736b2 100644 --- a/crates/sui-framework/published_api.txt +++ b/crates/sui-framework/published_api.txt @@ -166,6 +166,12 @@ StakingRequestEvent UnstakingRequestEvent public struct 0x3::validator +ConvertingToFungibleStakedSuiEvent + public struct + 0x3::validator +RedeemingFungibleStakedSuiEvent + public struct + 0x3::validator new_metadata public(package) fun 0x3::validator