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