Skip to content

Commit

Permalink
fix to receive BigDecimal at set_staking_share_ratio
Browse files Browse the repository at this point in the history
  • Loading branch information
beer-1 committed Sep 6, 2024
1 parent a70ed23 commit 9828386
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 18 deletions.
14 changes: 7 additions & 7 deletions crates/natives/src/staking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ pub struct NativeStakingContext<'a> {
api: &'a dyn StakingAPI,
staking_data: StakingData,
#[cfg(feature = "testing")]
share_ratios: BTreeMap<Vec<u8>, BTreeMap<AccountAddress, (u64 /* share */, u64 /* amount */)>>,
share_ratios: BTreeMap<Vec<u8>, BTreeMap<AccountAddress, (BigDecimal /* share */, u64 /* amount */)>>,
}

// ===========================================================================================
Expand Down Expand Up @@ -123,7 +123,7 @@ impl<'a> NativeStakingContext<'a> {
&mut self,
validator: Vec<u8>,
metadata: AccountAddress,
share: u64,
share: BigDecimal,
amount: u64,
) {
match self.share_ratios.get_mut(&validator) {
Expand Down Expand Up @@ -189,7 +189,7 @@ fn native_delegate(
if let Some(ratios) = staking_context.share_ratios.get(&validator) {
if let Some(ratio) = ratios.get(&metadata) {
return Ok(smallvec![write_big_decimal(
BigDecimal::from(amount) * ratio.0 / ratio.1
BigDecimal::from(amount) * ratio.0.clone() / ratio.1
)?]);
}
}
Expand Down Expand Up @@ -245,7 +245,7 @@ fn native_undelegate(
let ratios = staking_context.share_ratios.get(&validator).unwrap();
if ratios.contains_key(&metadata) {
let ratio = ratios.get(&metadata).unwrap();
let amount = (share * ratio.1 / ratio.0)
let amount = (share * ratio.1 / ratio.0.clone())
.to_bigint()
.unwrap()
.try_into()
Expand Down Expand Up @@ -299,7 +299,7 @@ fn native_share_to_amount(
let ratios = staking_context.share_ratios.get(&validator).unwrap();
if ratios.contains_key(&metadata) {
let ratio = ratios.get(&metadata).unwrap();
let amount = (share.clone() * ratio.1 / ratio.0)
let amount = (share.clone() * ratio.1 / ratio.0.clone())
.to_bigint()
.unwrap()
.try_into()
Expand Down Expand Up @@ -343,7 +343,7 @@ fn native_amount_to_share(
if ratios.contains_key(&metadata) {
let ratio = ratios.get(&metadata).unwrap();
return Ok(smallvec![write_big_decimal(
BigDecimal::from(amount) * ratio.0 / ratio.1
BigDecimal::from(amount) * ratio.0.clone() / ratio.1
)?]);
}
}
Expand Down Expand Up @@ -390,7 +390,7 @@ fn native_test_only_set_staking_share_ratio(
debug_assert!(arguments.len() == 4);

let amount = safely_pop_arg!(arguments, u64);
let share = safely_pop_arg!(arguments, u64);
let share = read_big_decimal(safely_pop_arg!(arguments, StructRef))?;
let metadata = get_metadata_address(&safely_pop_arg!(arguments, StructRef))?;
let validator = safely_pop_arg!(arguments, Vector).to_vec_u8()?;

Expand Down
22 changes: 11 additions & 11 deletions precompile/modules/initia_stdlib/sources/staking.move
Original file line number Diff line number Diff line change
Expand Up @@ -1610,7 +1610,7 @@ module initia_std::staking {
native public fun set_staking_share_ratio(
validator: vector<u8>,
metadata: &Object<Metadata>,
share: u64,
share: &BigDecimal,
amount: u64
);

Expand Down Expand Up @@ -1733,7 +1733,7 @@ module initia_std::staking {
set_staking_share_ratio(
*string::bytes(&validator),
&metadata,
1,
&bigdecimal::one(),
1
);

Expand Down Expand Up @@ -1876,7 +1876,7 @@ module initia_std::staking {
set_staking_share_ratio(
*string::bytes(&validator),
&metadata,
3,
&bigdecimal::from_u64(3),
2
);

Expand Down Expand Up @@ -1995,7 +1995,7 @@ module initia_std::staking {
set_staking_share_ratio(
*string::bytes(&validator),
&metadata,
1,
&bigdecimal::from_u64(1),
1
);

Expand Down Expand Up @@ -2152,7 +2152,7 @@ module initia_std::staking {
set_staking_share_ratio(
*string::bytes(&validator),
&metadata,
1,
&bigdecimal::from_u64(1),
1
);

Expand Down Expand Up @@ -2328,7 +2328,7 @@ module initia_std::staking {
set_staking_share_ratio(
*string::bytes(&validator),
&metadata,
1,
&bigdecimal::from_u64(1),
1
);

Expand Down Expand Up @@ -2378,13 +2378,13 @@ module initia_std::staking {
set_staking_share_ratio(
*string::bytes(&validator1),
&metadata,
1,
&bigdecimal::from_u64(1),
1
);
set_staking_share_ratio(
*string::bytes(&validator2),
&metadata,
1,
&bigdecimal::from_u64(1),
1
);

Expand Down Expand Up @@ -2549,7 +2549,7 @@ module initia_std::staking {

let metadata = staking_metadata_for_test();
let validator = vector::singleton(1u8);
set_staking_share_ratio(validator, &metadata, 100u64, 50u64);
set_staking_share_ratio(validator, &metadata, &bigdecimal::from_u64(100), 50u64);

let amount =
share_to_amount(
Expand All @@ -2566,7 +2566,7 @@ module initia_std::staking {

let metadata = staking_metadata_for_test();
let validator = vector::singleton(1u8);
set_staking_share_ratio(validator, &metadata, 100u64, 50u64);
set_staking_share_ratio(validator, &metadata, &bigdecimal::from_u64(100), 50u64);

let share = amount_to_share(validator, &metadata, 1);
assert!(bigdecimal::truncate_u64(share) == 2u64, 0);
Expand All @@ -2589,7 +2589,7 @@ module initia_std::staking {
set_staking_share_ratio(
*string::bytes(&validator),
&metadata,
1,
&bigdecimal::from_u64(1),
1
);

Expand Down

0 comments on commit 9828386

Please sign in to comment.