From 74cf8664bda5e5f09e5e4902309827c42ecc7e0d Mon Sep 17 00:00:00 2001 From: 0xxgen1 <0xxgen@solend.fi> Date: Thu, 12 Jun 2025 10:27:22 +0100 Subject: [PATCH 1/3] admin function to update coin metadata --- contracts/sources/liquid_staking.move | 31 ++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/contracts/sources/liquid_staking.move b/contracts/sources/liquid_staking.move index b4f5b85..03e4235 100644 --- a/contracts/sources/liquid_staking.move +++ b/contracts/sources/liquid_staking.move @@ -8,12 +8,13 @@ module liquid_staking::liquid_staking { use sui::bag::{Self, Bag}; use liquid_staking::fees::{FeeConfig}; use liquid_staking::cell::{Self, Cell}; - use sui::coin::{TreasuryCap}; + use sui::coin::{TreasuryCap, CoinMetadata}; use liquid_staking::version::{Self, Version}; use liquid_staking::events::{emit_event}; use sui_system::staking_pool::{FungibleStakedSui}; use std::type_name::{Self, TypeName}; use sui::package; + use std::string::String; /* Errors */ const EInvalidLstCreation: u64 = 0; @@ -491,6 +492,34 @@ module liquid_staking::liquid_staking { false } + public fun update_metadata

( + self: &mut LiquidStakingInfo

, + _: &AdminCap

, + metadata: &mut CoinMetadata

, + name: Option, + symbol: Option, + description: Option, + icon_url: Option, + ) { + let treasury_cap = &self.lst_treasury_cap; + + if (name.is_some()) { + treasury_cap.update_name(metadata, name.destroy_some()); + }; + + if (symbol.is_some()) { + treasury_cap.update_symbol(metadata, symbol.destroy_some().to_ascii()); + }; + + if (description.is_some()) { + treasury_cap.update_description(metadata, description.destroy_some()); + }; + + if (icon_url.is_some()) { + treasury_cap.update_icon_url(metadata, icon_url.destroy_some().to_ascii()); + }; + } + public(package) fun mark_redeem_request_as_processed

( _: &AdminCap

, request: &mut CustomRedeemRequest

From 3760afb38799afa7a2ccd269db9c1a75fa5b2649 Mon Sep 17 00:00:00 2001 From: 0xxgen1 <0xxgen@solend.fi> Date: Tue, 8 Jul 2025 14:32:11 +0100 Subject: [PATCH 2/3] set test_refresh_inactive_staking_pool_edge_case to fail --- contracts/tests/storage_tests.move | 1 + 1 file changed, 1 insertion(+) diff --git a/contracts/tests/storage_tests.move b/contracts/tests/storage_tests.move index cb33fef..2bcffda 100644 --- a/contracts/tests/storage_tests.move +++ b/contracts/tests/storage_tests.move @@ -437,6 +437,7 @@ module liquid_staking::storage_tests { } #[test] + #[expected_failure(abort_code = 15, location = sui_system::staking_pool)] fun test_refresh_inactive_staking_pool_edge_case() { let mut scenario = test_scenario::begin(@0x0); From bb1e81c0fcd6de1f8fd7b59ce3f7444b51d1f08f Mon Sep 17 00:00:00 2001 From: 0xxgen1 <0xxgen@solend.fi> Date: Tue, 8 Jul 2025 14:43:48 +0100 Subject: [PATCH 3/3] use ascii for symbol and url --- contracts/sources/liquid_staking.move | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/contracts/sources/liquid_staking.move b/contracts/sources/liquid_staking.move index 03e4235..ccc1d63 100644 --- a/contracts/sources/liquid_staking.move +++ b/contracts/sources/liquid_staking.move @@ -15,6 +15,7 @@ module liquid_staking::liquid_staking { use std::type_name::{Self, TypeName}; use sui::package; use std::string::String; + use std::ascii; /* Errors */ const EInvalidLstCreation: u64 = 0; @@ -497,9 +498,9 @@ module liquid_staking::liquid_staking { _: &AdminCap

, metadata: &mut CoinMetadata

, name: Option, - symbol: Option, + symbol: Option, description: Option, - icon_url: Option, + icon_url: Option, ) { let treasury_cap = &self.lst_treasury_cap; @@ -508,7 +509,7 @@ module liquid_staking::liquid_staking { }; if (symbol.is_some()) { - treasury_cap.update_symbol(metadata, symbol.destroy_some().to_ascii()); + treasury_cap.update_symbol(metadata, symbol.destroy_some()); }; if (description.is_some()) { @@ -516,7 +517,7 @@ module liquid_staking::liquid_staking { }; if (icon_url.is_some()) { - treasury_cap.update_icon_url(metadata, icon_url.destroy_some().to_ascii()); + treasury_cap.update_icon_url(metadata, icon_url.destroy_some()); }; }