Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Malleable Blocks Part 2 #186

Merged
merged 11 commits into from
Mar 2, 2022
10 changes: 5 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 10 additions & 10 deletions fuel-client/tests/blocks.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use chrono::{TimeZone, Utc};
use fuel_core::database::Database;
use fuel_core::model::fuel_block::FuelBlockHeaders;
use fuel_core::model::fuel_block::FuelBlockHeader;
use fuel_core::{
model::fuel_block::FuelBlockLight,
model::fuel_block::FuelBlockDb,
schema::scalars::HexString256,
service::{Config, FuelService},
};
Expand All @@ -14,10 +14,10 @@ use itertools::{rev, Itertools};
#[tokio::test]
async fn block() {
// setup test data in the node
let block = FuelBlockLight::default();
let block = FuelBlockDb::default();
let id = block.id();
let mut db = Database::default();
Storage::<Bytes32, FuelBlockLight>::insert(&mut db, &id, &block).unwrap();
Storage::<Bytes32, FuelBlockDb>::insert(&mut db, &id, &block).unwrap();

// setup server & client
let srv = FuelService::from_database(db, Config::local_node())
Expand All @@ -37,8 +37,8 @@ async fn block() {
async fn block_connection_first_5() {
// blocks
let blocks = (0..10u32)
.map(|i| FuelBlockLight {
headers: FuelBlockHeaders {
.map(|i| FuelBlockDb {
headers: FuelBlockHeader {
fuel_height: i.into(),
time: Utc.timestamp(i.into(), 0),
producer: Default::default(),
Expand All @@ -52,7 +52,7 @@ async fn block_connection_first_5() {
let mut db = Database::default();
for block in blocks {
let id = block.id();
Storage::<Bytes32, FuelBlockLight>::insert(&mut db, &id, &block).unwrap();
Storage::<Bytes32, FuelBlockDb>::insert(&mut db, &id, &block).unwrap();
}

// setup server & client
Expand Down Expand Up @@ -83,8 +83,8 @@ async fn block_connection_first_5() {
async fn block_connection_last_5() {
// blocks
let blocks = (0..10u32)
.map(|i| FuelBlockLight {
headers: FuelBlockHeaders {
.map(|i| FuelBlockDb {
headers: FuelBlockHeader {
fuel_height: i.into(),
time: Utc.timestamp(i.into(), 0),
producer: Default::default(),
Expand All @@ -98,7 +98,7 @@ async fn block_connection_last_5() {
let mut db = Database::default();
for block in blocks {
let id = block.id();
Storage::<Bytes32, FuelBlockLight>::insert(&mut db, &id, &block).unwrap();
Storage::<Bytes32, FuelBlockDb>::insert(&mut db, &id, &block).unwrap();
}

// setup server & client
Expand Down
10 changes: 5 additions & 5 deletions fuel-client/tests/tx.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use chrono::Utc;
use fuel_core::executor::ExecutionMode;
use fuel_core::model::fuel_block::{FuelBlockFull, FuelBlockHeaders};
use fuel_core::model::fuel_block::{FuelBlock, FuelBlockHeader};
use fuel_core::{
database::Database,
executor::Executor,
Expand Down Expand Up @@ -268,8 +268,8 @@ async fn get_transactions_from_manual_blocks() {
let txs: Vec<Transaction> = (0..10).map(create_mock_tx).collect();

// make 1st test block
let mut first_test_block = FuelBlockFull {
headers: FuelBlockHeaders {
let mut first_test_block = FuelBlock {
headers: FuelBlockHeader {
fuel_height: 1u32.into(),
time: Utc::now(),
producer: Default::default(),
Expand All @@ -281,8 +281,8 @@ async fn get_transactions_from_manual_blocks() {
};

// make 2nd test block
let mut second_test_block = FuelBlockFull {
headers: FuelBlockHeaders {
let mut second_test_block = FuelBlock {
headers: FuelBlockHeader {
fuel_height: 2u32.into(),
time: Utc::now(),
producer: Default::default(),
Expand Down
4 changes: 2 additions & 2 deletions fuel-core/src/database.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#[cfg(feature = "rocksdb")]
use crate::database::columns::COLUMN_NUM;
use crate::database::transactional::DatabaseTransaction;
use crate::model::fuel_block::FuelBlockLight;
use crate::model::fuel_block::FuelBlockDb;
#[cfg(feature = "rocksdb")]
use crate::state::rocks_db::RocksDb;
use crate::state::{
Expand Down Expand Up @@ -174,7 +174,7 @@ impl InterpreterStorage for Database {
fn coinbase(&self) -> Result<Address, Error> {
let height = self.get_block_height()?.unwrap_or_default();
let id = self.block_hash(height.into())?;
let block = Storage::<Bytes32, FuelBlockLight>::get(self, &id)?.unwrap_or_default();
let block = Storage::<Bytes32, FuelBlockDb>::get(self, &id)?.unwrap_or_default();
Ok(block.headers.producer)
}
}
14 changes: 7 additions & 7 deletions fuel-core/src/database/block.rs
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
use crate::{
database::{columns::BLOCKS, columns::BLOCK_IDS, Database, KvStoreError},
model::fuel_block::{BlockHeight, FuelBlockLight},
model::fuel_block::{BlockHeight, FuelBlockDb},
state::{Error, IterDirection},
};
use fuel_storage::Storage;
use fuel_tx::Bytes32;
use std::borrow::Cow;
use std::convert::{TryFrom, TryInto};

impl Storage<Bytes32, FuelBlockLight> for Database {
impl Storage<Bytes32, FuelBlockDb> for Database {
type Error = KvStoreError;

fn insert(
&mut self,
key: &Bytes32,
value: &FuelBlockLight,
) -> Result<Option<FuelBlockLight>, KvStoreError> {
value: &FuelBlockDb,
) -> Result<Option<FuelBlockDb>, KvStoreError> {
Database::insert(self, value.headers.fuel_height, BLOCK_IDS, *key)?;
Database::insert(self, key.as_ref(), BLOCKS, value.clone()).map_err(Into::into)
}

fn remove(&mut self, key: &Bytes32) -> Result<Option<FuelBlockLight>, KvStoreError> {
let block: Option<FuelBlockLight> = Database::remove(self, key.as_ref(), BLOCKS)?;
fn remove(&mut self, key: &Bytes32) -> Result<Option<FuelBlockDb>, KvStoreError> {
let block: Option<FuelBlockDb> = Database::remove(self, key.as_ref(), BLOCKS)?;
if let Some(block) = &block {
let _: Option<Bytes32> =
Database::remove(self, &block.headers.fuel_height.to_bytes(), BLOCK_IDS)?;
}
Ok(block)
}

fn get(&self, key: &Bytes32) -> Result<Option<Cow<FuelBlockLight>>, KvStoreError> {
fn get(&self, key: &Bytes32) -> Result<Option<Cow<FuelBlockDb>>, KvStoreError> {
Database::get(self, key.as_ref(), BLOCKS).map_err(Into::into)
}

Expand Down
6 changes: 4 additions & 2 deletions fuel-core/src/database/contracts.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use crate::database::columns::CONTRACT_UTXO_ID;
use crate::{
database::{columns::CONTRACTS, Database},
database::{
columns::{CONTRACTS, CONTRACT_UTXO_ID},
Database,
},
state::Error,
};
use fuel_tx::UtxoId;
Expand Down