Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 0 additions & 15 deletions crates/storage/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,21 +92,6 @@ pub trait StoreEngine: Debug + Send + Sync + RefUnwindSafe {
block_hash: BlockHash,
) -> Result<Option<BlockNumber>, StoreError>;

/// Store transaction location (block number and index of the transaction within the block)
async fn add_transaction_location(
&self,
transaction_hash: H256,
block_number: BlockNumber,
block_hash: BlockHash,
index: Index,
) -> Result<(), StoreError>;

/// Store transaction locations in batch (one db transaction for all)
async fn add_transaction_locations(
&self,
locations: Vec<(H256, BlockNumber, BlockHash, Index)>,
) -> Result<(), StoreError>;

/// Obtain transaction location (block hash and index)
async fn get_transaction_location(
&self,
Expand Down
96 changes: 0 additions & 96 deletions crates/storage/store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -305,33 +305,6 @@ impl Store {
))
}

pub async fn add_transaction_location(
&self,
transaction_hash: H256,
block_number: BlockNumber,
block_hash: BlockHash,
index: Index,
) -> Result<(), StoreError> {
self.engine
.add_transaction_location(transaction_hash, block_number, block_hash, index)
.await
}

pub async fn add_transaction_locations(
&self,
transactions: &[Transaction],
block_number: BlockNumber,
block_hash: BlockHash,
) -> Result<(), StoreError> {
let mut locations = vec![];

for (index, transaction) in transactions.iter().enumerate() {
locations.push((transaction.hash(), block_number, block_hash, index as Index));
}

self.engine.add_transaction_locations(locations).await
}

pub async fn get_transaction_location(
&self,
transaction_hash: H256,
Expand Down Expand Up @@ -1386,8 +1359,6 @@ mod tests {
async fn test_store_suite(engine_type: EngineType) {
run_test(test_store_block, engine_type).await;
run_test(test_store_block_number, engine_type).await;
run_test(test_store_transaction_location, engine_type).await;
run_test(test_store_transaction_location_not_canonical, engine_type).await;
run_test(test_store_block_receipt, engine_type).await;
run_test(test_store_account_code, engine_type).await;
run_test(test_store_block_tags, engine_type).await;
Expand Down Expand Up @@ -1590,73 +1561,6 @@ mod tests {
assert_eq!(stored_number, block_number);
}

async fn test_store_transaction_location(store: Store) {
let transaction_hash = H256::random();
let block_hash = H256::random();
let block_number = 6;
let index = 3;

store
.add_transaction_location(transaction_hash, block_number, block_hash, index)
.await
.unwrap();

store
.add_block_header(block_hash, BlockHeader::default())
.await
.unwrap();

store
.forkchoice_update(None, block_number, block_hash, None, None)
.await
.unwrap();

let stored_location = store
.get_transaction_location(transaction_hash)
.await
.unwrap()
.unwrap();

assert_eq!(stored_location, (block_number, block_hash, index));
}

async fn test_store_transaction_location_not_canonical(store: Store) {
let transaction_hash = H256::random();
let block_header = BlockHeader::default();
let random_hash = H256::random();
let block_number = 6;
let index = 3;

store
.add_transaction_location(transaction_hash, block_number, block_header.hash(), index)
.await
.unwrap();

store
.add_block_header(block_header.hash(), block_header.clone())
.await
.unwrap();

// Store random block hash
store
.add_block_header(random_hash, block_header)
.await
.unwrap();

store
.forkchoice_update(None, block_number, random_hash, None, None)
.await
.unwrap();

assert_eq!(
store
.get_transaction_location(transaction_hash)
.await
.unwrap(),
None
)
}

async fn test_store_block_receipt(store: Store) {
let receipt = Receipt {
tx_type: TxType::EIP2930,
Expand Down
36 changes: 3 additions & 33 deletions crates/storage/store_db/in_memory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -252,9 +252,9 @@ impl StoreEngine for Store {
.transactions
.iter()
.enumerate()
.map(|(i, tx)| (tx.hash(), number, hash, i as u64));

self.add_transaction_locations(locations.collect()).await?;
.map(|(i, tx)| (number, tx.hash(), i as u64))
.collect();
self.inner()?.transaction_locations.insert(hash, locations);
self.add_block_body(hash, block.body.clone()).await?;
self.add_block_header(hash, header).await?;
}
Expand Down Expand Up @@ -285,21 +285,6 @@ impl StoreEngine for Store {
self.get_block_number_sync(block_hash)
}

async fn add_transaction_location(
&self,
transaction_hash: H256,
block_number: BlockNumber,
block_hash: BlockHash,
index: Index,
) -> Result<(), StoreError> {
self.inner()?
.transaction_locations
.entry(transaction_hash)
.or_default()
.push((block_number, block_hash, index));
Ok(())
}

async fn get_transaction_location(
&self,
transaction_hash: H256,
Expand Down Expand Up @@ -511,21 +496,6 @@ impl StoreEngine for Store {
Ok(())
}

async fn add_transaction_locations(
&self,
locations: Vec<(H256, BlockNumber, BlockHash, Index)>,
) -> Result<(), StoreError> {
for (transaction_hash, block_number, block_hash, index) in locations {
self.inner()?
.transaction_locations
.entry(transaction_hash)
.or_default()
.push((block_number, block_hash, index));
}

Ok(())
}

async fn set_header_download_checkpoint(
&self,
block_hash: BlockHash,
Expand Down
42 changes: 0 additions & 42 deletions crates/storage/store_db/rocksdb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -791,48 +791,6 @@ impl StoreEngine for Store {
.transpose()
}

async fn add_transaction_location(
&self,
transaction_hash: H256,
block_number: BlockNumber,
block_hash: BlockHash,
index: Index,
) -> Result<(), StoreError> {
// Key: tx_hash + block_hash
let mut composite_key = Vec::with_capacity(64);
composite_key.extend_from_slice(transaction_hash.as_bytes());
composite_key.extend_from_slice(block_hash.as_bytes());

let location_value = (block_number, block_hash, index).encode_to_vec();
self.write_async(CF_TRANSACTION_LOCATIONS, composite_key, location_value)
.await
}

// TODO: This function should be removed #4748
// Check also keys
async fn add_transaction_locations(
&self,
locations: Vec<(H256, BlockNumber, BlockHash, Index)>,
) -> Result<(), StoreError> {
let mut batch_ops = Vec::new();

for (tx_hash, block_number, block_hash, index) in locations {
// Key: tx_hash + block_hash
let mut composite_key = Vec::with_capacity(64);
composite_key.extend_from_slice(tx_hash.as_bytes());
composite_key.extend_from_slice(block_hash.as_bytes());

let location_value = (block_number, block_hash, index).encode_to_vec();
batch_ops.push((
CF_TRANSACTION_LOCATIONS.to_string(),
composite_key,
location_value,
));
}

self.write_batch_async(batch_ops).await
}

// Check also keys
async fn get_transaction_location(
&self,
Expand Down
Loading