diff --git a/.changes/changed/2767.md b/.changes/changed/2767.md new file mode 100644 index 00000000000..36b2e571531 --- /dev/null +++ b/.changes/changed/2767.md @@ -0,0 +1 @@ +Updated fuel-vm to v0.60.0, see [release notes](https://github.com/FuelLabs/fuel-vm/releases/tag/v0.60.0). \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 72462cd8f14..b734fbd7399 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1257,6 +1257,22 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -3309,24 +3325,24 @@ dependencies = [ [[package]] name = "fuel-asm" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48cb44034f02a922df95889a888948e62258edb1910bcf7fe79ee5c92b412f" +checksum = "4702e63db53a308a4bb57ba21e8f7dcb08f1146a9b34fce06d964306ed3e1497" dependencies = [ "bitflags 2.8.0", - "fuel-types 0.59.2", + "fuel-types 0.60.0", "serde", "strum 0.24.1", ] [[package]] name = "fuel-compression" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e0dc3a4155607e2e4fe364b4bb7c8b6a75605fd0922e4887ce2a4809b600" +checksum = "aad1694f1c4f53309056d5343aae7f1944408b5c426d52d34027f4005778e54c" dependencies = [ - "fuel-derive 0.59.2", - "fuel-types 0.59.2", + "fuel-derive 0.60.0", + "fuel-types 0.60.0", "serde", ] @@ -3933,7 +3949,7 @@ dependencies = [ "enum-iterator", "fuel-core-storage", "fuel-core-types 0.41.7", - "fuel-vm 0.59.2", + "fuel-vm 0.60.0", "impl-tools", "itertools 0.12.1", "mockall", @@ -4079,7 +4095,7 @@ dependencies = [ "bs58", "derive_more 0.99.19", "educe", - "fuel-vm 0.59.2", + "fuel-vm 0.60.0", "k256", "rand", "secrecy", @@ -4138,20 +4154,20 @@ dependencies = [ [[package]] name = "fuel-crypto" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefb201fbf4753e696c21bea9e5702a11c210ed8ec2830386a83d85109362055" +checksum = "b478d21160fa528667ca477b82e2426efa5ac226a7b6fce67987d62f1b041cac" dependencies = [ + "base64ct", "coins-bip32", "coins-bip39", "ecdsa", "ed25519-dalek", - "fuel-types 0.59.2", + "fuel-types 0.60.0", "k256", - "lazy_static", "p256", "rand", - "secp256k1 0.29.1", + "secp256k1 0.30.0", "serde", "sha2 0.10.8", "zeroize", @@ -4171,9 +4187,9 @@ dependencies = [ [[package]] name = "fuel-derive" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb5b7bb2277f37f4b3d36b4c49257f1f5804cf7d8c0224f417115186d06ee249" +checksum = "3e0b24c724f47a73f021dae315e5d2b5aec03ba6b9ef9d66377106a20a5fdcde" dependencies = [ "proc-macro2", "quote", @@ -4209,13 +4225,13 @@ dependencies = [ [[package]] name = "fuel-merkle" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e591b5056b011c943c5a40acda4ce568bec745111a15aed986f1e9bf2c0bded" +checksum = "7d3a023169ea7231b6bd107c513b8b9a7ff849df5ca023c120b348da234ec20a" dependencies = [ "derive_more 0.99.19", "digest 0.10.7", - "fuel-storage 0.59.2", + "fuel-storage 0.60.0", "hashbrown 0.13.2", "hex", "serde", @@ -4242,9 +4258,9 @@ checksum = "4c1b711f28553ddc5f3546711bd220e144ce4c1af7d9e9a1f70b2f20d9f5b791" [[package]] name = "fuel-storage" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ada067d4aaff1acf1175a00edb1c3efbeccf7e2fb414270a2d29eedb2f207c97" +checksum = "8425dc32f86e2d6082126ee34998a9556306c6a79d95b85a62a05b439ff9bb19" [[package]] name = "fuel-tx" @@ -4270,18 +4286,18 @@ dependencies = [ [[package]] name = "fuel-tx" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5374f7caf8a447f3a67ea1ec381e60133ea54b6ea1544e51214446c6b44f5b39" +checksum = "db32cb7845a7462b02a8406303bfc5387589387418b5f4817a01bd5d3d16b287" dependencies = [ "bitflags 2.8.0", "derive_more 1.0.0", "educe", - "fuel-asm 0.59.2", + "fuel-asm 0.60.0", "fuel-compression", - "fuel-crypto 0.59.2", - "fuel-merkle 0.59.2", - "fuel-types 0.59.2", + "fuel-crypto 0.60.0", + "fuel-merkle 0.60.0", + "fuel-types 0.60.0", "hashbrown 0.14.5", "itertools 0.10.5", "postcard", @@ -4304,11 +4320,11 @@ dependencies = [ [[package]] name = "fuel-types" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2cbad4962ba02b683f33686eb79c3002dde3791f3c71a4465d46601caba8b6" +checksum = "284f4e00bb184c4d24e7fe12f5a698612c384f2b9354eba4478bb022b4fb0a33" dependencies = [ - "fuel-derive 0.59.2", + "fuel-derive 0.60.0", "hex", "rand", "serde", @@ -4347,9 +4363,9 @@ dependencies = [ [[package]] name = "fuel-vm" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc85fe82b07c8ec2a84bf897d48184c0ba70894dd80366c988564f04b9ec64a" +checksum = "a07bfdb498244dc1e82de4e396a6c1f4183fd05355454e4847a727c9b5fb3331" dependencies = [ "anyhow", "async-trait", @@ -4358,13 +4374,13 @@ dependencies = [ "derive_more 0.99.19", "educe", "ethnum", - "fuel-asm 0.59.2", + "fuel-asm 0.60.0", "fuel-compression", - "fuel-crypto 0.59.2", - "fuel-merkle 0.59.2", - "fuel-storage 0.59.2", - "fuel-tx 0.59.2", - "fuel-types 0.59.2", + "fuel-crypto 0.60.0", + "fuel-merkle 0.60.0", + "fuel-storage 0.60.0", + "fuel-tx 0.60.0", + "fuel-types 0.60.0", "hashbrown 0.14.5", "itertools 0.10.5", "libm", @@ -4828,6 +4844,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + [[package]] name = "hex_fmt" version = "0.3.0" @@ -8786,10 +8811,11 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.29.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ + "bitcoin_hashes", "rand", "secp256k1-sys 0.10.1", ] diff --git a/Cargo.toml b/Cargo.toml index a229d511cc3..cd305a8ea02 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -103,7 +103,7 @@ fuel-core-global-merkle-root-storage = { version = "0.41.7", path = "./crates/pr fuel-core-global-merkle-root-service = { version = "0.41.7", path = "./crates/proof_system/global_merkle_root/service" } # Fuel dependencies -fuel-vm-private = { version = "0.59.2", package = "fuel-vm", default-features = false } +fuel-vm-private = { version = "0.60.0", package = "fuel-vm", default-features = false } # Common dependencies anyhow = "1.0" diff --git a/benches/benches/vm.rs b/benches/benches/vm.rs index e629ccbf654..e35dd233b7e 100644 --- a/benches/benches/vm.rs +++ b/benches/benches/vm.rs @@ -59,7 +59,7 @@ where black_box(vm.prepare_call(ra, rb, rc, rd)).unwrap(); } _ => { - black_box(vm.instruction(*instruction).unwrap()); + black_box(vm.instruction::<_, false>(*instruction).unwrap()); } } black_box(&vm); diff --git a/benches/src/lib.rs b/benches/src/lib.rs index 667e21b2b66..71bd3ca466e 100644 --- a/benches/src/lib.rs +++ b/benches/src/lib.rs @@ -536,7 +536,7 @@ impl TryFrom for VmBenchPrepared { vm.prepare_call(ra, rb, rc, rd) .map_err(anyhow::Error::msg)?; for instruction in post_call { - vm.instruction(instruction).unwrap(); + vm.instruction::<_, false>(instruction).unwrap(); } } @@ -548,7 +548,7 @@ impl TryFrom for VmBenchPrepared { vm.prepare_call(ra, rb, rc, rd).unwrap(); } _ => { - vm.instruction(instruction).unwrap(); + vm.instruction::<_, false>(instruction).unwrap(); } } let storage_diff = vm.storage_diff(); diff --git a/crates/fuel-core/src/database/storage.rs b/crates/fuel-core/src/database/storage.rs index 4d5a408af48..0ca7bc22e43 100644 --- a/crates/fuel-core/src/database/storage.rs +++ b/crates/fuel-core/src/database/storage.rs @@ -57,22 +57,21 @@ where for<'a> StorageTransaction<&'a Storage>: StorageWrite, Self: Modifiable, { - fn write_bytes(&mut self, key: &M::Key, buf: &[u8]) -> Result { + fn write_bytes(&mut self, key: &M::Key, buf: &[u8]) -> Result<(), Self::Error> { let mut transaction = StorageTransaction::transaction( self.as_ref(), ConflictPolicy::Overwrite, Default::default(), ); - let prev = <_ as StorageWrite>::write_bytes(&mut transaction, key, buf)?; - self.commit_changes(transaction.into_changes())?; - Ok(prev) + <_ as StorageWrite>::write_bytes(&mut transaction, key, buf)?; + self.commit_changes(transaction.into_changes()) } fn replace_bytes( &mut self, key: &M::Key, buf: &[u8], - ) -> Result<(usize, Option>), Self::Error> { + ) -> Result>, Self::Error> { let mut transaction = StorageTransaction::transaction( self.as_ref(), ConflictPolicy::Overwrite, diff --git a/crates/fuel-core/src/graphql_api/database.rs b/crates/fuel-core/src/graphql_api/database.rs index 20ee054644d..5251530b459 100644 --- a/crates/fuel-core/src/graphql_api/database.rs +++ b/crates/fuel-core/src/graphql_api/database.rs @@ -311,7 +311,7 @@ impl StorageRead for ReadView { key: &BlobId, offset: usize, buf: &mut [u8], - ) -> Result, Self::Error> { + ) -> Result { StorageRead::::read(self.on_chain.as_ref(), key, offset, buf) } diff --git a/crates/fuel-core/src/schema/dap.rs b/crates/fuel-core/src/schema/dap.rs index 6e08ab465ab..c2231145d8f 100644 --- a/crates/fuel-core/src/schema/dap.rs +++ b/crates/fuel-core/src/schema/dap.rs @@ -207,7 +207,7 @@ impl ConcreteStorage { pub fn exec(&mut self, id: &ID, op: Instruction) -> anyhow::Result<()> { self.vm .get_mut(id) - .map(|vm| vm.instruction(op)) + .map(|vm| vm.instruction::<_, false>(op)) .transpose() .map_err(|e| anyhow::anyhow!(e))? .map(|_| ()) diff --git a/crates/fuel-core/src/state/data_source.rs b/crates/fuel-core/src/state/data_source.rs index f30f3ee8268..0896c5e31b2 100644 --- a/crates/fuel-core/src/state/data_source.rs +++ b/crates/fuel-core/src/state/data_source.rs @@ -69,7 +69,7 @@ where column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { + ) -> StorageResult { self.data.read(key, column, offset, buf) } } diff --git a/crates/fuel-core/src/state/generic_database.rs b/crates/fuel-core/src/state/generic_database.rs index 74c27eb4f87..8b089760876 100644 --- a/crates/fuel-core/src/state/generic_database.rs +++ b/crates/fuel-core/src/state/generic_database.rs @@ -93,7 +93,7 @@ where key: &M::Key, offset: usize, buf: &mut [u8], - ) -> Result, Self::Error> { + ) -> Result { self.storage.storage::().read(key, offset, buf) } @@ -141,7 +141,7 @@ where column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { + ) -> StorageResult { KeyValueInspect::read(&self.storage, key, column, offset, buf) } } diff --git a/crates/fuel-core/src/state/historical_rocksdb.rs b/crates/fuel-core/src/state/historical_rocksdb.rs index 6e24c3476bc..952ea0d107a 100644 --- a/crates/fuel-core/src/state/historical_rocksdb.rs +++ b/crates/fuel-core/src/state/historical_rocksdb.rs @@ -538,7 +538,7 @@ where column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { + ) -> StorageResult { self.db .read(key, Column::OriginalColumn(column), offset, buf) } diff --git a/crates/fuel-core/src/state/iterable_key_value_view.rs b/crates/fuel-core/src/state/iterable_key_value_view.rs index 1d8fd02cbbb..3a5f3734580 100644 --- a/crates/fuel-core/src/state/iterable_key_value_view.rs +++ b/crates/fuel-core/src/state/iterable_key_value_view.rs @@ -69,7 +69,7 @@ where column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { + ) -> StorageResult { self.0.read(key, column, offset, buf) } } diff --git a/crates/fuel-core/src/state/key_value_view.rs b/crates/fuel-core/src/state/key_value_view.rs index e507e83329a..05c0e6ac38d 100644 --- a/crates/fuel-core/src/state/key_value_view.rs +++ b/crates/fuel-core/src/state/key_value_view.rs @@ -56,7 +56,7 @@ where column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { + ) -> StorageResult { self.0.read(key, column, offset, buf) } } diff --git a/crates/fuel-core/src/state/rocks_db.rs b/crates/fuel-core/src/state/rocks_db.rs index fb473d430d6..5ccffc10236 100644 --- a/crates/fuel-core/src/state/rocks_db.rs +++ b/crates/fuel-core/src/state/rocks_db.rs @@ -911,39 +911,39 @@ where column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { + ) -> StorageResult { self.metrics.read_meter.inc(); let column_metrics = self.metrics.columns_read_statistic.get(&column.id()); column_metrics.map(|metric| metric.inc()); - let r = self + let Some(value) = self .db .get_pinned_cf_opt(&self.cf(column), key, &self.read_options) .map_err(|e| DatabaseError::Other(e.into()))? - .map(|value| { - let bytes_len = value.len(); - let start = offset; - let buf_len = buf.len(); - let end = offset.saturating_add(buf_len); - - if end > bytes_len { - return Err(StorageError::Other(anyhow::anyhow!( - "Offset `{offset}` + buf_len `{buf_len}` read until {end} which is out of bounds `{bytes_len}` for key `{:?}` and column `{column:?}`", - key - ))); - } + else { + return Ok(false); + }; - let starting_from_offset = &value[start..end]; - buf[..].copy_from_slice(starting_from_offset); - Ok(buf_len) - }) - .transpose()?; + let bytes_len = value.len(); + let start = offset; + let buf_len = buf.len(); + let end = offset.saturating_add(buf_len); - if let Some(r) = &r { - self.metrics.bytes_read.inc_by(*r as u64); + if end > bytes_len { + return Err(StorageError::Other(anyhow::anyhow!( + "Offset `{offset}` + buf_len `{buf_len}` read until {end} which is out of bounds `{bytes_len}` for key `{:?}` and column `{column:?}`", + key + ))); } - Ok(r) + let starting_from_offset = &value[start..end]; + buf[..].copy_from_slice(starting_from_offset); + + self.metrics + .bytes_read + .inc_by(starting_from_offset.len() as u64); + + Ok(true) } } diff --git a/crates/services/txpool_v2/src/tests/mocks.rs b/crates/services/txpool_v2/src/tests/mocks.rs index 40e09584211..23a476657fb 100644 --- a/crates/services/txpool_v2/src/tests/mocks.rs +++ b/crates/services/txpool_v2/src/tests/mocks.rs @@ -130,25 +130,23 @@ impl StorageRead for MockDb { key: &::Key, offset: usize, buf: &mut [u8], - ) -> Result, Self::Error> { + ) -> Result { let table = self.data.lock().unwrap(); - let bytes = table.blobs.get(key); + let Some(bytes) = table.blobs.get(key) else { + return Ok(false); + }; - bytes - .map(|bytes| { - let bytes_len = bytes.as_ref().len(); - let start = offset; - let end = offset.saturating_add(buf.len()); + let bytes_len = bytes.as_ref().len(); + let start = offset; + let end = offset.saturating_add(buf.len()); - if end > bytes_len { - return Err(()); - } + if end > bytes_len { + return Err(()); + } - let starting_from_offset = &bytes.as_ref()[start..end]; - buf[..].copy_from_slice(starting_from_offset); - Ok(buf.len()) - }) - .transpose() + let starting_from_offset = &bytes.as_ref()[start..end]; + buf[..].copy_from_slice(starting_from_offset); + Ok(true) } fn read_alloc( diff --git a/crates/storage/src/kv_store.rs b/crates/storage/src/kv_store.rs index b9753947ed3..78930db578a 100644 --- a/crates/storage/src/kv_store.rs +++ b/crates/storage/src/kv_store.rs @@ -59,34 +59,34 @@ pub trait KeyValueInspect { /// Returns the value from the storage. fn get(&self, key: &[u8], column: Self::Column) -> StorageResult>; - /// Reads the value from the storage into the `buf` and returns the number of read bytes. + /// Reads the value from the storage into the `buf` and returns the whether the value exists. fn read( &self, key: &[u8], column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { - self.get(key, column)? - .map(|value| { - let bytes_len = value.as_ref().len(); - let start = offset; - let buf_len = buf.len(); - let end = offset.saturating_add(buf_len); - - if end > bytes_len { - return Err(anyhow::anyhow!( + ) -> StorageResult { + let Some(value) = self.get(key, column)? else { + return Ok(false); + }; + + let bytes_len = value.as_ref().len(); + let start = offset; + let buf_len = buf.len(); + let end = offset.saturating_add(buf_len); + + if end > bytes_len { + return Err(anyhow::anyhow!( "Offset `{offset}` + buf_len `{buf_len}` read until {end} which is out of bounds `{bytes_len}` for key `{:?}`", key ) .into()); - } + } - let starting_from_offset = &value.as_ref()[start..end]; - buf[..].copy_from_slice(starting_from_offset); - Ok(buf_len) - }) - .transpose() + let starting_from_offset = &value.as_ref()[start..end]; + buf[..].copy_from_slice(starting_from_offset); + Ok(true) } } @@ -119,7 +119,7 @@ where column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { + ) -> StorageResult { self.deref().read(key, column, offset, buf) } } diff --git a/crates/storage/src/structured_storage.rs b/crates/storage/src/structured_storage.rs index 4e1239c5982..5d402af0c47 100644 --- a/crates/storage/src/structured_storage.rs +++ b/crates/storage/src/structured_storage.rs @@ -149,7 +149,7 @@ where column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { + ) -> StorageResult { self.inner.read(key, column, offset, buf) } } @@ -361,7 +361,7 @@ where key: &::Key, offset: usize, buf: &mut [u8], - ) -> Result, Self::Error> { + ) -> Result { let key_encoder = >>::KeyCodec::encode( key, @@ -400,22 +400,19 @@ where // without deserialization into `OwnedValue`. M::OwnedValue: Into>, { - fn write_bytes(&mut self, key: &M::Key, buf: &[u8]) -> Result { + fn write_bytes(&mut self, key: &M::Key, buf: &[u8]) -> Result<(), Self::Error> { ::Blueprint::put(self, key, M::column(), buf) - .map(|_| buf.len()) } fn replace_bytes( &mut self, key: &M::Key, buf: &[u8], - ) -> Result<(usize, Option>), Self::Error> { - let bytes_written = buf.len(); - let prev = + ) -> Result>, Self::Error> { + Ok( ::Blueprint::replace(self, key, M::column(), buf)? - .map(|prev| prev.into()); - let result = (bytes_written, prev); - Ok(result) + .map(|prev| prev.into()), + ) } fn take_bytes(&mut self, key: &M::Key) -> Result>, Self::Error> { diff --git a/crates/storage/src/transactional.rs b/crates/storage/src/transactional.rs index a8cbc204805..28841e11cbe 100644 --- a/crates/storage/src/transactional.rs +++ b/crates/storage/src/transactional.rs @@ -408,7 +408,7 @@ where column: Self::Column, offset: usize, buf: &mut [u8], - ) -> StorageResult> { + ) -> StorageResult { if let Some(operation) = self.get_from_changes(key, column) { match operation { WriteOperation::Insert(value) => { @@ -427,9 +427,9 @@ where let starting_from_offset = &value.as_ref()[start..end]; buf[..].copy_from_slice(starting_from_offset); - Ok(Some(buf_len)) + Ok(true) } - WriteOperation::Remove => Ok(None), + WriteOperation::Remove => Ok(false), } } else { self.storage.read(key, column, offset, buf) @@ -690,7 +690,7 @@ mod test { let mut buf = [0; 3]; let ret = view.read(&key, Column::Metadata, 0, &mut buf).unwrap(); // verify - assert_eq!(ret, Some(3)); + assert!(ret); assert_eq!(buf, [1, 2, 3]); } @@ -706,7 +706,7 @@ mod test { let mut buf = [0; 2]; let ret = view.read(&key, Column::Metadata, 0, &mut buf).unwrap(); // verify - assert_eq!(ret, Some(2)); + assert!(ret); assert_eq!(buf, [1, 2]); } @@ -722,7 +722,7 @@ mod test { let mut buf = [0; 2]; let ret = view.read(&key, Column::Metadata, 1, &mut buf).unwrap(); // verify - assert_eq!(ret, Some(2)); + assert!(ret); assert_eq!(buf, [2, 3]); } diff --git a/crates/storage/src/vm_storage.rs b/crates/storage/src/vm_storage.rs index e70b42d6591..ed924f84a00 100644 --- a/crates/storage/src/vm_storage.rs +++ b/crates/storage/src/vm_storage.rs @@ -195,7 +195,7 @@ where key: &M::Key, offset: usize, buf: &mut [u8], - ) -> Result, Self::Error> { + ) -> Result { StorageRead::::read(&self.database, key, offset, buf) } @@ -211,7 +211,7 @@ impl StorageWrite for VmStorage where D: StorageWrite, { - fn write_bytes(&mut self, key: &M::Key, buf: &[u8]) -> Result { + fn write_bytes(&mut self, key: &M::Key, buf: &[u8]) -> Result<(), Self::Error> { StorageWrite::::write_bytes(&mut self.database, key, buf) } @@ -219,7 +219,7 @@ where &mut self, key: &M::Key, buf: &[u8], - ) -> Result<(usize, Option>), Self::Error> { + ) -> Result>, Self::Error> { StorageWrite::::replace_bytes(&mut self.database, key, buf) }