From 02a65633d72b10dc02bd6c62d5decb6642749fa5 Mon Sep 17 00:00:00 2001 From: Bea LeLeveret Date: Tue, 28 Jan 2025 17:26:06 -0500 Subject: [PATCH] patch v5 coin amount decimal scaling --- src/json_rescue_v5_extract.rs | 8 ++++---- src/schema_transaction.rs | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/json_rescue_v5_extract.rs b/src/json_rescue_v5_extract.rs index 9a6c542..15be6d1 100644 --- a/src/json_rescue_v5_extract.rs +++ b/src/json_rescue_v5_extract.rs @@ -2,7 +2,7 @@ use crate::{ scan::FrameworkVersion, schema_transaction::{ EntryFunctionArgs, RelationLabel, WarehouseEvent, WarehouseTxMaster, - LEGACY_REBASE_MULTIPLIER, + COIN_DECIMAL_PRECISION, LEGACY_REBASE_MULTIPLIER, }, unzip_temp::decompress_tar_archive, }; @@ -126,7 +126,7 @@ fn maybe_decode_v5_genesis_function( } => { wtx.relation_label = RelationLabel::Transfer( cast_legacy_account(destination)?, - *unscaled_value * LEGACY_REBASE_MULTIPLIER, + *unscaled_value * COIN_DECIMAL_PRECISION * LEGACY_REBASE_MULTIPLIER, ); wtx.entry_function = Some(EntryFunctionArgs::V5(sf.to_owned())); @@ -151,7 +151,7 @@ fn maybe_decode_v5_genesis_function( } => { wtx.relation_label = RelationLabel::Onboarding( cast_legacy_account(account)?, - *unscaled_value * LEGACY_REBASE_MULTIPLIER, + *unscaled_value * COIN_DECIMAL_PRECISION * LEGACY_REBASE_MULTIPLIER, ); } ScriptFunctionCallGenesis::CreateValidatorAccount { @@ -202,7 +202,7 @@ fn maybe_decode_v520_function( } => { wtx.relation_label = RelationLabel::Transfer( cast_legacy_account(destination)?, - *unscaled_value * LEGACY_REBASE_MULTIPLIER, + *unscaled_value * COIN_DECIMAL_PRECISION * LEGACY_REBASE_MULTIPLIER, ); wtx.entry_function = Some(EntryFunctionArgs::V520(sf.to_owned())); diff --git a/src/schema_transaction.rs b/src/schema_transaction.rs index 8d534bb..768b33e 100644 --- a/src/schema_transaction.rs +++ b/src/schema_transaction.rs @@ -17,7 +17,7 @@ use serde::{Deserialize, Serialize}; pub const LEGACY_REBASE_MULTIPLIER: u64 = 35; /// Decimal precision // TODO: duplication, this is probably defined in libra-framework somewhere -pub const COIN_DECIMAL_PRECISION: f64 = 1000000.0; +pub const COIN_DECIMAL_PRECISION: u64 = 1000000; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum RelationLabel { @@ -59,13 +59,13 @@ impl RelationLabel { match &self { RelationLabel::Transfer(_, amount) => { if *amount > 0 { - let human = (*amount as f64) / COIN_DECIMAL_PRECISION; + let human = (*amount as f64) / COIN_DECIMAL_PRECISION as f64; return Some(human); } } RelationLabel::Onboarding(_, amount) => { if *amount > 0 { - let human = (*amount as f64) / COIN_DECIMAL_PRECISION; + let human = (*amount as f64) / COIN_DECIMAL_PRECISION as f64; return Some(human); } }