Explorar o código

contract/money: Avoid unnecessary db key serialization

parazyd %!s(int64=2) %!d(string=hai) anos
pai
achega
8690575c43

+ 4 - 8
src/contract/money/src/entrypoint.rs

@@ -169,24 +169,20 @@ fn init_contract(cid: ContractId, ix: &[u8]) -> ContractResult {
             let mut coin_tree_data = vec![];
             coin_tree_data.write_u32(0)?;
             coin_tree.encode(&mut coin_tree_data)?;
-            db_set(info_db, &serialize(&MONEY_CONTRACT_COIN_MERKLE_TREE), &coin_tree_data)?;
+            db_set(info_db, MONEY_CONTRACT_COIN_MERKLE_TREE, &coin_tree_data)?;
 
             // Initialize the paid fees accumulator
-            db_set(info_db, &serialize(&MONEY_CONTRACT_TOTAL_FEES_PAID), &serialize(&0_u64))?;
+            db_set(info_db, MONEY_CONTRACT_TOTAL_FEES_PAID, &serialize(&0_u64))?;
 
             info_db
         }
     };
 
     // Whitelisted faucets
-    db_set(info_db, &serialize(&MONEY_CONTRACT_FAUCET_PUBKEYS), &serialize(&faucet_pubkeys))?;
+    db_set(info_db, MONEY_CONTRACT_FAUCET_PUBKEYS, &serialize(&faucet_pubkeys))?;
 
     // Update db version
-    db_set(
-        info_db,
-        &serialize(&MONEY_CONTRACT_DB_VERSION),
-        &serialize(&env!("CARGO_PKG_VERSION")),
-    )?;
+    db_set(info_db, MONEY_CONTRACT_DB_VERSION, &serialize(&env!("CARGO_PKG_VERSION")))?;
 
     Ok(())
 }

+ 4 - 4
src/contract/money/src/entrypoint/fee_v1.rs

@@ -212,7 +212,7 @@ pub(crate) fn money_fee_process_instruction_v1(
 
     // Accumulate the paid fee
     let mut paid_fee: u64 =
-        deserialize(&db_get(info_db, &serialize(&MONEY_CONTRACT_TOTAL_FEES_PAID))?.unwrap())?;
+        deserialize(&db_get(info_db, MONEY_CONTRACT_TOTAL_FEES_PAID)?.unwrap())?;
     paid_fee += params.fee;
 
     // At this point the state transition has passed, so we create a state update.
@@ -250,12 +250,12 @@ pub(crate) fn money_fee_process_update_v1(
     merkle_add(
         info_db,
         coin_roots_db,
-        &serialize(&MONEY_CONTRACT_LATEST_COIN_ROOT),
-        &serialize(&MONEY_CONTRACT_COIN_MERKLE_TREE),
+        MONEY_CONTRACT_LATEST_COIN_ROOT,
+        MONEY_CONTRACT_COIN_MERKLE_TREE,
         &coins,
     )?;
 
-    db_set(info_db, &serialize(&MONEY_CONTRACT_TOTAL_FEES_PAID), &serialize(&update.fee))?;
+    db_set(info_db, MONEY_CONTRACT_TOTAL_FEES_PAID, &serialize(&update.fee))?;
 
     Ok(())
 }

+ 2 - 2
src/contract/money/src/entrypoint/genesis_mint_v1.rs

@@ -150,8 +150,8 @@ pub(crate) fn money_genesis_mint_process_update_v1(
     merkle_add(
         info_db,
         coin_roots_db,
-        &serialize(&MONEY_CONTRACT_LATEST_COIN_ROOT),
-        &serialize(&MONEY_CONTRACT_COIN_MERKLE_TREE),
+        MONEY_CONTRACT_LATEST_COIN_ROOT,
+        MONEY_CONTRACT_COIN_MERKLE_TREE,
         &coins,
     )?;
 

+ 2 - 2
src/contract/money/src/entrypoint/pow_reward_v1.rs

@@ -200,8 +200,8 @@ pub(crate) fn money_pow_reward_process_update_v1(
     merkle_add(
         info_db,
         coin_roots_db,
-        &serialize(&MONEY_CONTRACT_LATEST_COIN_ROOT),
-        &serialize(&MONEY_CONTRACT_COIN_MERKLE_TREE),
+        MONEY_CONTRACT_LATEST_COIN_ROOT,
+        MONEY_CONTRACT_COIN_MERKLE_TREE,
         &coins,
     )?;
 

+ 2 - 2
src/contract/money/src/entrypoint/token_mint_v1.rs

@@ -158,8 +158,8 @@ pub(crate) fn money_token_mint_process_update_v1(
     merkle_add(
         info_db,
         coin_roots_db,
-        &serialize(&MONEY_CONTRACT_LATEST_COIN_ROOT),
-        &serialize(&MONEY_CONTRACT_COIN_MERKLE_TREE),
+        MONEY_CONTRACT_LATEST_COIN_ROOT,
+        MONEY_CONTRACT_COIN_MERKLE_TREE,
         &coins,
     )?;
 

+ 4 - 3
src/contract/money/src/entrypoint/transfer_v1.rs

@@ -129,9 +129,10 @@ pub(crate) fn money_transfer_process_instruction_v1(
     let nullifiers_db = db_lookup(cid, MONEY_CONTRACT_NULLIFIERS_TREE)?;
     let coin_roots_db = db_lookup(cid, MONEY_CONTRACT_COIN_ROOTS_TREE)?;
 
+    // FIXME: Remove faucet references
     // Grab faucet pubkeys. They're allowed to create clear inputs.
     // Currently we use them for airdrops in the testnet.
-    let Some(faucet_pubkeys) = db_get(info_db, &serialize(&MONEY_CONTRACT_FAUCET_PUBKEYS))? else {
+    let Some(faucet_pubkeys) = db_get(info_db, MONEY_CONTRACT_FAUCET_PUBKEYS)? else {
         msg!("[TransferV1] Error: Missing faucet pubkeys from info db");
         return Err(MoneyError::TransferMissingFaucetKeys.into())
     };
@@ -287,8 +288,8 @@ pub(crate) fn money_transfer_process_update_v1(
     merkle_add(
         info_db,
         coin_roots_db,
-        &serialize(&MONEY_CONTRACT_LATEST_COIN_ROOT),
-        &serialize(&MONEY_CONTRACT_COIN_MERKLE_TREE),
+        MONEY_CONTRACT_LATEST_COIN_ROOT,
+        MONEY_CONTRACT_COIN_MERKLE_TREE,
         &coins,
     )?;
 

+ 2 - 2
src/contract/money/src/entrypoint/unstake_v1.rs

@@ -190,8 +190,8 @@ pub(crate) fn money_unstake_process_update_v1(
     merkle_add(
         info_db,
         coin_roots_db,
-        &serialize(&MONEY_CONTRACT_LATEST_COIN_ROOT),
-        &serialize(&MONEY_CONTRACT_COIN_MERKLE_TREE),
+        MONEY_CONTRACT_LATEST_COIN_ROOT,
+        MONEY_CONTRACT_COIN_MERKLE_TREE,
         &coins,
     )?;
 

+ 11 - 10
src/contract/money/src/lib.rs

@@ -76,11 +76,11 @@ pub const MONEY_CONTRACT_NULLIFIERS_TREE: &str = "nullifiers";
 pub const MONEY_CONTRACT_TOKEN_FREEZE_TREE: &str = "token_freezes";
 
 // These are keys inside the info tree
-pub const MONEY_CONTRACT_DB_VERSION: &str = "db_version";
-pub const MONEY_CONTRACT_COIN_MERKLE_TREE: &str = "coin_tree";
-pub const MONEY_CONTRACT_LATEST_COIN_ROOT: &str = "last_root";
-pub const MONEY_CONTRACT_FAUCET_PUBKEYS: &str = "faucet_pubkeys";
-pub const MONEY_CONTRACT_TOTAL_FEES_PAID: &str = "total_fees_paid";
+pub const MONEY_CONTRACT_DB_VERSION: &[u8] = b"db_version";
+pub const MONEY_CONTRACT_COIN_MERKLE_TREE: &[u8] = b"coin_tree";
+pub const MONEY_CONTRACT_LATEST_COIN_ROOT: &[u8] = b"last_root";
+pub const MONEY_CONTRACT_FAUCET_PUBKEYS: &[u8] = b"faucet_pubkeys";
+pub const MONEY_CONTRACT_TOTAL_FEES_PAID: &[u8] = b"total_fees_paid";
 
 /// zkas mint circuit namespace
 pub const MONEY_CONTRACT_ZKAS_MINT_NS_V1: &str = "Mint_V1";
@@ -103,11 +103,12 @@ pub const CONSENSUS_CONTRACT_STAKED_COIN_ROOTS_TREE: &str = "consensus_staked_co
 pub const CONSENSUS_CONTRACT_UNSTAKED_COIN_ROOTS_TREE: &str = "consensus_unstaked_coin_roots";
 
 // These are keys inside the consensus info tree
-pub const CONSENSUS_CONTRACT_DB_VERSION: &str = "db_version";
-pub const CONSENSUS_CONTRACT_STAKED_COIN_MERKLE_TREE: &str = "consensus_staked_coin_tree";
-pub const CONSENSUS_CONTRACT_STAKED_COIN_LATEST_COIN_ROOT: &str = "consensus_staked_last_root";
-pub const CONSENSUS_CONTRACT_UNSTAKED_COIN_MERKLE_TREE: &str = "consensus_unstaked_coin_tree";
-pub const CONSENSUS_CONTRACT_UNSTAKED_COIN_LATEST_COIN_ROOT: &str = "consensus_unstaked_last_root";
+pub const CONSENSUS_CONTRACT_DB_VERSION: &[u8] = b"db_version";
+pub const CONSENSUS_CONTRACT_STAKED_COIN_MERKLE_TREE: &[u8] = b"consensus_staked_coin_tree";
+pub const CONSENSUS_CONTRACT_STAKED_COIN_LATEST_COIN_ROOT: &[u8] = b"consensus_staked_last_root";
+pub const CONSENSUS_CONTRACT_UNSTAKED_COIN_MERKLE_TREE: &[u8] = b"consensus_unstaked_coin_tree";
+pub const CONSENSUS_CONTRACT_UNSTAKED_COIN_LATEST_COIN_ROOT: &[u8] =
+    b"consensus_unstaked_last_root";
 
 /// zkas consensus mint circuit namespace
 pub const CONSENSUS_CONTRACT_ZKAS_MINT_NS_V1: &str = "ConsensusMint_V1";