Эх сурвалжийг харах

v2.0: Remove deprecated symbols from recent_blockhashes_account (backport of #2004) (#2009)

Remove deprecated symbols from recent_blockhashes_account (#2004)

* Move recent_blockhashes_account to runtime

* Fixup imports

* Reduce pub

* Remove unused method

* Duplicate code to limit pub and dependency complexity

* Move test-only fn into tests module

(cherry picked from commit f77658b9e4d5b441165d72f8dfafd1490dce1493)

Co-authored-by: Tyera <tyera@anza.xyz>
mergify[bot] 1 жил өмнө
parent
commit
ec08d81213

+ 39 - 14
programs/system/src/system_processor.rs

@@ -542,7 +542,10 @@ declare_process_instruction!(Entrypoint, DEFAULT_COMPUTE_UNITS, |invoke_context|
 mod tests {
     #[allow(deprecated)]
     use solana_sdk::{
-        account::{self, Account, AccountSharedData, ReadableAccount},
+        account::{
+            self, create_account_shared_data_with_fields, to_account, Account, AccountSharedData,
+            ReadableAccount, DUMMY_INHERITABLE_ACCOUNT_FIELDS,
+        },
         fee_calculator::FeeCalculator,
         hash::{hash, Hash},
         instruction::{AccountMeta, Instruction, InstructionError},
@@ -552,8 +555,12 @@ mod tests {
                 Data as NonceData, DurableNonce, State as NonceState, Versions as NonceVersions,
             },
         },
-        nonce_account, recent_blockhashes_account, system_instruction, system_program,
-        sysvar::{self, recent_blockhashes::IterItem, rent::Rent},
+        nonce_account, system_instruction, system_program,
+        sysvar::{
+            self,
+            recent_blockhashes::{IntoIterSorted, IterItem, RecentBlockhashes, MAX_ENTRIES},
+            rent::Rent,
+        },
     };
     use {
         super::*,
@@ -562,6 +569,7 @@ mod tests {
         solana_program_runtime::{
             invoke_context::mock_process_instruction, with_mock_invoke_context,
         },
+        std::collections::BinaryHeap,
     };
 
     impl From<Pubkey> for Address {
@@ -595,11 +603,30 @@ mod tests {
     fn create_default_account() -> AccountSharedData {
         AccountSharedData::new(0, 0, &Pubkey::new_unique())
     }
+    #[allow(deprecated)]
+    fn create_recent_blockhashes_account_for_test<'a, I>(
+        recent_blockhash_iter: I,
+    ) -> AccountSharedData
+    where
+        I: IntoIterator<Item = IterItem<'a>>,
+    {
+        let mut account = create_account_shared_data_with_fields::<RecentBlockhashes>(
+            &RecentBlockhashes::default(),
+            DUMMY_INHERITABLE_ACCOUNT_FIELDS,
+        );
+        let sorted = BinaryHeap::from_iter(recent_blockhash_iter);
+        let sorted_iter = IntoIterSorted::new(sorted);
+        let recent_blockhash_iter = sorted_iter.take(MAX_ENTRIES);
+        let recent_blockhashes: RecentBlockhashes = recent_blockhash_iter.collect();
+        to_account(&recent_blockhashes, &mut account);
+        account
+    }
     fn create_default_recent_blockhashes_account() -> AccountSharedData {
         #[allow(deprecated)]
-        recent_blockhashes_account::create_account_with_data_for_test(
-            vec![IterItem(0u64, &Hash::default(), 0); sysvar::recent_blockhashes::MAX_ENTRIES],
-        )
+        create_recent_blockhashes_account_for_test(vec![
+            IterItem(0u64, &Hash::default(), 0);
+            sysvar::recent_blockhashes::MAX_ENTRIES
+        ])
     }
     fn create_default_rent_account() -> AccountSharedData {
         account::create_account_shared_data_for_test(&Rent::free())
@@ -1551,10 +1578,10 @@ mod tests {
         );
         let blockhash = hash(&serialize(&0).unwrap());
         #[allow(deprecated)]
-        let new_recent_blockhashes_account =
-            solana_sdk::recent_blockhashes_account::create_account_with_data_for_test(
-                vec![IterItem(0u64, &blockhash, 0); sysvar::recent_blockhashes::MAX_ENTRIES],
-            );
+        let new_recent_blockhashes_account = create_recent_blockhashes_account_for_test(vec![
+                IterItem(0u64, &blockhash, 0);
+                sysvar::recent_blockhashes::MAX_ENTRIES
+            ]);
         mock_process_instruction(
             &system_program::id(),
             Vec::new(),
@@ -1837,8 +1864,7 @@ mod tests {
         #[allow(deprecated)]
         let blockhash_id = sysvar::recent_blockhashes::id();
         #[allow(deprecated)]
-        let new_recent_blockhashes_account =
-            solana_sdk::recent_blockhashes_account::create_account_with_data_for_test(vec![]);
+        let new_recent_blockhashes_account = create_recent_blockhashes_account_for_test(vec![]);
         process_instruction(
             &serialize(&SystemInstruction::InitializeNonceAccount(nonce_address)).unwrap(),
             vec![
@@ -1900,8 +1926,7 @@ mod tests {
             Ok(()),
         );
         #[allow(deprecated)]
-        let new_recent_blockhashes_account =
-            solana_sdk::recent_blockhashes_account::create_account_with_data_for_test(vec![]);
+        let new_recent_blockhashes_account = create_recent_blockhashes_account_for_test(vec![]);
         mock_process_instruction(
             &system_program::id(),
             Vec::new(),

+ 1 - 2
runtime/src/bank.rs

@@ -33,8 +33,6 @@
 //! It offers a high-level API that signs transactions
 //! on behalf of the caller, and a low-level API for when they have
 //! already been signed and verified.
-#[allow(deprecated)]
-use solana_sdk::recent_blockhashes_account;
 use {
     crate::{
         bank::{
@@ -228,6 +226,7 @@ pub mod epoch_accounts_hash_utils;
 mod fee_distribution;
 mod metrics;
 pub(crate) mod partitioned_epoch_rewards;
+mod recent_blockhashes_account;
 mod serde_snapshot;
 mod sysvar_cache;
 pub(crate) mod tests;

+ 15 - 47
sdk/src/recent_blockhashes_account.rs → runtime/src/bank/recent_blockhashes_account.rs

@@ -1,29 +1,19 @@
 //! Helpers for the recent blockhashes sysvar.
 
 #[allow(deprecated)]
-use solana_program::sysvar::recent_blockhashes::{
+use solana_sdk::sysvar::recent_blockhashes::{
     IntoIterSorted, IterItem, RecentBlockhashes, MAX_ENTRIES,
 };
 use {
-    crate::{
-        account::{
-            create_account_shared_data_with_fields, to_account, AccountSharedData,
-            InheritableAccountFields, DUMMY_INHERITABLE_ACCOUNT_FIELDS,
-        },
-        clock::INITIAL_RENT_EPOCH,
+    solana_sdk::account::{
+        create_account_shared_data_with_fields, to_account, AccountSharedData,
+        InheritableAccountFields,
     },
     std::{collections::BinaryHeap, iter::FromIterator},
 };
 
-#[deprecated(
-    since = "1.9.0",
-    note = "Please do not use, will no longer be available in the future"
-)]
 #[allow(deprecated)]
-pub fn update_account<'a, I>(
-    account: &mut AccountSharedData,
-    recent_blockhash_iter: I,
-) -> Option<()>
+fn update_account<'a, I>(account: &mut AccountSharedData, recent_blockhash_iter: I) -> Option<()>
 where
     I: IntoIterator<Item = IterItem<'a>>,
 {
@@ -37,25 +27,8 @@ where
     to_account(&recent_blockhashes, account)
 }
 
-#[deprecated(
-    since = "1.5.17",
-    note = "Please use `create_account_with_data_for_test` instead"
-)]
-#[allow(deprecated)]
-pub fn create_account_with_data<'a, I>(lamports: u64, recent_blockhash_iter: I) -> AccountSharedData
-where
-    I: IntoIterator<Item = IterItem<'a>>,
-{
-    #[allow(deprecated)]
-    create_account_with_data_and_fields(recent_blockhash_iter, (lamports, INITIAL_RENT_EPOCH))
-}
-
-#[deprecated(
-    since = "1.9.0",
-    note = "Please do not use, will no longer be available in the future"
-)]
 #[allow(deprecated)]
-pub fn create_account_with_data_and_fields<'a, I>(
+pub(in crate::bank) fn create_account_with_data_and_fields<'a, I>(
     recent_blockhash_iter: I,
     fields: InheritableAccountFields,
 ) -> AccountSharedData
@@ -70,31 +43,26 @@ where
     account
 }
 
-#[deprecated(
-    since = "1.9.0",
-    note = "Please do not use, will no longer be available in the future"
-)]
-#[allow(deprecated)]
-pub fn create_account_with_data_for_test<'a, I>(recent_blockhash_iter: I) -> AccountSharedData
-where
-    I: IntoIterator<Item = IterItem<'a>>,
-{
-    create_account_with_data_and_fields(recent_blockhash_iter, DUMMY_INHERITABLE_ACCOUNT_FIELDS)
-}
-
 #[cfg(test)]
 mod tests {
     #![allow(deprecated)]
     use {
         super::*,
-        crate::account::from_account,
         rand::{seq::SliceRandom, thread_rng},
-        solana_program::{
+        solana_sdk::{
+            account::{from_account, DUMMY_INHERITABLE_ACCOUNT_FIELDS},
             hash::{Hash, HASH_BYTES},
             sysvar::recent_blockhashes::Entry,
         },
     };
 
+    fn create_account_with_data_for_test<'a, I>(recent_blockhash_iter: I) -> AccountSharedData
+    where
+        I: IntoIterator<Item = IterItem<'a>>,
+    {
+        create_account_with_data_and_fields(recent_blockhash_iter, DUMMY_INHERITABLE_ACCOUNT_FIELDS)
+    }
+
     #[test]
     fn test_create_account_empty() {
         let account = create_account_with_data_for_test(vec![]);

+ 0 - 1
sdk/src/lib.rs

@@ -93,7 +93,6 @@ pub mod precompiles;
 pub mod program_utils;
 pub mod pubkey;
 pub mod quic;
-pub mod recent_blockhashes_account;
 pub mod rent_collector;
 pub mod rent_debits;
 pub mod reserved_account_keys;