Skip to content

Commit

Permalink
add events for FungibleStakedSui creation and redemption
Browse files Browse the repository at this point in the history
  • Loading branch information
0xripleys committed Sep 23, 2024
1 parent c8bc1b7 commit 8156c67
Showing 1 changed file with 43 additions and 2 deletions.
45 changes: 43 additions & 2 deletions crates/sui-framework/packages/sui-system/sources/validator.move
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,21 @@ module sui_system::validator {
reward_amount: u64,
}

/// Event emitted when a staked SUI is converted to a fungible staked SUI.
public struct ConvertingToFungibleStakedSuiEvent has copy, drop {
pool_id: ID,
stake_activation_epoch: u64,
staked_sui_principal_amount: u64,
fungible_staked_sui_amount: u64,
}

/// Event emitted when a fungible staked SUI is redeemed.
public struct RedeemingFungibleStakedSuiEvent has copy, drop {
pool_id: ID,
fungible_staked_sui_amount: u64,
sui_amount: u64,
}

public(package) fun new_metadata(
sui_address: address,
protocol_pubkey_bytes: vector<u8>,
Expand Down Expand Up @@ -311,15 +326,41 @@ module sui_system::validator {
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
}

public(package) fun redeem_fungible_staked_sui(
self: &mut Validator,
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
}

/// Request to add stake to the validator's staking pool at genesis
Expand Down

0 comments on commit 8156c67

Please sign in to comment.