diff --git a/aptos-move/aptos-aggregator/src/delta_change_set.rs b/aptos-move/aptos-aggregator/src/delta_change_set.rs index 51a120acb239d..c7f7800631f5b 100644 --- a/aptos-move/aptos-aggregator/src/delta_change_set.rs +++ b/aptos-move/aptos-aggregator/src/delta_change_set.rs @@ -589,10 +589,16 @@ mod test { let sub_op = delta_sub(100, 200); let add_result = state_view.try_convert_aggregator_v1_delta_into_write_op(&KEY, &add_op); - assert_ok_eq!(add_result, WriteOp::Modification(serialize(&200).into())); + assert_ok_eq!( + add_result, + WriteOp::legacy_modification(serialize(&200).into()) + ); let sub_result = state_view.try_convert_aggregator_v1_delta_into_write_op(&KEY, &sub_op); - assert_ok_eq!(sub_result, WriteOp::Modification(serialize(&0).into())); + assert_ok_eq!( + sub_result, + WriteOp::legacy_modification(serialize(&0).into()) + ); } #[test] diff --git a/aptos-move/aptos-aggregator/src/resolver.rs b/aptos-move/aptos-aggregator/src/resolver.rs index b4751aa585633..f2c084e7ff445 100644 --- a/aptos-move/aptos-aggregator/src/resolver.rs +++ b/aptos-move/aptos-aggregator/src/resolver.rs @@ -15,7 +15,7 @@ use aptos_types::{ aggregator::PanicError, state_store::{ state_key::StateKey, - state_value::{StateValue, StateValueMetadataKind}, + state_value::{StateValue, StateValueMetadata}, }, write_set::WriteOp, }; @@ -64,7 +64,7 @@ pub trait TAggregatorV1View { fn get_aggregator_v1_state_value_metadata( &self, id: &Self::Identifier, - ) -> anyhow::Result> { + ) -> anyhow::Result> { // When getting state value metadata for aggregator V1, we need to do a // precise read. let maybe_state_value = self.get_aggregator_v1_state_value(id)?; @@ -120,7 +120,7 @@ pub trait TAggregatorV1View { ))) .into_vm_status() }) - .map(|result| WriteOp::Modification(serialize(&result).into())) + .map(|result| WriteOp::legacy_modification(serialize(&result).into())) } } diff --git a/aptos-move/aptos-vm-types/src/abstract_write_op.rs b/aptos-move/aptos-vm-types/src/abstract_write_op.rs index 20bbcc113db5d..ad43b7085e174 100644 --- a/aptos-move/aptos-vm-types/src/abstract_write_op.rs +++ b/aptos-move/aptos-vm-types/src/abstract_write_op.rs @@ -5,7 +5,6 @@ use aptos_types::{ state_store::state_value::StateValueMetadata, write_set::{TransactionWrite, WriteOp, WriteOpSize}, }; -use claims::assert_none; use move_core_types::{language_storage::StructTag, value::MoveTypeLayout}; use std::{collections::BTreeMap, sync::Arc}; @@ -55,15 +54,13 @@ impl AbstractResourceWriteOp { }) => { use WriteOp::*; match write_op { - Creation(_) | CreationWithMetadata { .. } => WriteOpSize::Creation { + Creation { .. } => WriteOpSize::Creation { write_len: materialized_size.expect("Creation must have size"), }, - Modification(_) | ModificationWithMetadata { .. } => { - WriteOpSize::Modification { - write_len: materialized_size.expect("Modification must have size"), - } + Modification { .. } => WriteOpSize::Modification { + write_len: materialized_size.expect("Modification must have size"), }, - Deletion | DeletionWithMetadata { .. } => WriteOpSize::Deletion, + Deletion { .. } => WriteOpSize::Deletion, } }, InPlaceDelayedFieldChange(InPlaceDelayedFieldChangeOp { @@ -80,7 +77,7 @@ impl AbstractResourceWriteOp { /// Deposit amount is inserted into metadata at a different time than the WriteOp is created. /// So this method is needed to be able to update metadata generically across different variants. - pub fn get_metadata_mut(&mut self) -> Option<&mut StateValueMetadata> { + pub fn get_metadata_mut(&mut self) -> &mut StateValueMetadata { use AbstractResourceWriteOp::*; match self { Write(write_op) @@ -88,8 +85,12 @@ impl AbstractResourceWriteOp { | WriteResourceGroup(GroupWrite { metadata_op: write_op, .. + }) + | ResourceGroupInPlaceDelayedFieldChange(ResourceGroupInPlaceDelayedFieldChangeOp { + metadata_op: write_op, + .. }) => write_op.get_metadata_mut(), - InPlaceDelayedFieldChange(_) | ResourceGroupInPlaceDelayedFieldChange(_) => None, + InPlaceDelayedFieldChange(InPlaceDelayedFieldChangeOp { metadata, .. }) => metadata, } } @@ -148,7 +149,10 @@ impl GroupWrite { metadata_op ); for (_tag, (v, _layout)) in &inner_ops { - assert_none!(v.metadata(), "Group inner ops must have no metadata"); + assert!( + v.metadata().is_none(), + "Group inner ops must have no metadata" + ) } let maybe_group_op_size = (!metadata_op.is_deletion()).then_some(group_size); @@ -193,6 +197,7 @@ pub struct WriteWithDelayedFieldsOp { pub struct InPlaceDelayedFieldChangeOp { pub layout: Arc, pub materialized_size: u64, + pub metadata: StateValueMetadata, } /// Actual information of which individual tag has delayed fields was read, diff --git a/aptos-move/aptos-vm-types/src/change_set.rs b/aptos-move/aptos-vm-types/src/change_set.rs index cd5a9b797c9e6..0c82555121eac 100644 --- a/aptos-move/aptos-vm-types/src/change_set.rs +++ b/aptos-move/aptos-vm-types/src/change_set.rs @@ -154,6 +154,7 @@ impl VMChangeSet { ), ) })?, + metadata: w.into_metadata(), }, ), )) @@ -341,7 +342,7 @@ impl VMChangeSet { /// So this method is needed to be able to update metadata generically across different variants. pub fn write_set_iter_mut( &mut self, - ) -> impl Iterator)> { + ) -> impl Iterator { self.resource_write_set .iter_mut() .map(|(k, v)| (k, v.materialized_size(), v.get_metadata_mut())) @@ -476,10 +477,7 @@ impl VMChangeSet { if let Some(write_op) = aggregator_v1_write_set.get_mut(&state_key) { // In this case, delta follows a write op. match write_op { - Creation(data) - | Modification(data) - | CreationWithMetadata { data, .. } - | ModificationWithMetadata { data, .. } => { + Creation { data, .. } | Modification { data, .. } => { // Apply delta on top of creation or modification. // TODO[agg_v1](cleanup): This will not be needed anymore once aggregator // change sets carry non-serialized information. @@ -491,7 +489,7 @@ impl VMChangeSet { .map_err(|e| e.finish(Location::Undefined).into_vm_status())?; *data = serialize(&value).into(); }, - Deletion | DeletionWithMetadata { .. } => { + Deletion { .. } => { // This case (applying a delta to deleted item) should // never happen. Let's still return an error instead of // panicking. diff --git a/aptos-move/aptos-vm-types/src/resolver.rs b/aptos-move/aptos-vm-types/src/resolver.rs index e43f973dcf416..5c737e3688889 100644 --- a/aptos-move/aptos-vm-types/src/resolver.rs +++ b/aptos-move/aptos-vm-types/src/resolver.rs @@ -10,7 +10,7 @@ use aptos_types::{ state_store::{ state_key::StateKey, state_storage_usage::StateStorageUsage, - state_value::{StateValue, StateValueMetadataKind}, + state_value::{StateValue, StateValueMetadata}, }, write_set::WriteOp, }; @@ -45,7 +45,7 @@ pub trait TResourceView { fn get_resource_state_value_metadata( &self, state_key: &Self::Key, - ) -> anyhow::Result> { + ) -> anyhow::Result> { // For metadata, layouts are not important. self.get_resource_state_value(state_key, None) .map(|maybe_state_value| maybe_state_value.map(StateValue::into_metadata)) @@ -151,7 +151,7 @@ pub trait TModuleView { fn get_module_state_value_metadata( &self, state_key: &Self::Key, - ) -> anyhow::Result> { + ) -> anyhow::Result> { let maybe_state_value = self.get_module_state_value(state_key)?; Ok(maybe_state_value.map(StateValue::into_metadata)) } @@ -275,13 +275,13 @@ pub trait StateValueMetadataResolver { fn get_module_state_value_metadata( &self, state_key: &StateKey, - ) -> anyhow::Result>; + ) -> anyhow::Result>; /// Can also be used to get the metadata of a resource group at a provided group key. fn get_resource_state_value_metadata( &self, state_key: &StateKey, - ) -> anyhow::Result>; + ) -> anyhow::Result>; } #[derive(Clone, Copy, Debug, Eq, PartialEq)] diff --git a/aptos-move/aptos-vm-types/src/storage/space_pricing.rs b/aptos-move/aptos-vm-types/src/storage/space_pricing.rs index 02e305a4102ec..37f19b232367c 100644 --- a/aptos-move/aptos-vm-types/src/storage/space_pricing.rs +++ b/aptos-move/aptos-vm-types/src/storage/space_pricing.rs @@ -33,7 +33,7 @@ impl DiskSpacePricing { params: &TransactionGasParameters, key: &StateKey, op_size: &WriteOpSize, - metadata: Option<&mut StateValueMetadata>, + metadata: &mut StateValueMetadata, ) -> ChargeAndRefund { match self { Self::V1 => Self::charge_refund_write_op_v1(params, key, op_size, metadata), @@ -97,7 +97,7 @@ impl DiskSpacePricing { params: &TransactionGasParameters, key: &StateKey, op_size: &WriteOpSize, - metadata: Option<&mut StateValueMetadata>, + metadata: &mut StateValueMetadata, ) -> ChargeAndRefund { use WriteOpSize::*; @@ -107,8 +107,8 @@ impl DiskSpacePricing { let bytes_fee = Self::discounted_write_op_size_for_v1(params, key, *write_len) * params.storage_fee_per_excess_state_byte; - if let Some(m) = metadata { - m.set_deposit(slot_fee.into()) + if !metadata.is_none() { + metadata.set_slot_deposit(slot_fee.into()) } ChargeAndRefund { @@ -125,17 +125,9 @@ impl DiskSpacePricing { refund: 0.into(), } }, - Deletion => { - let refund = match metadata { - None => 0, - Some(m) => m.deposit(), - } - .into(); - - ChargeAndRefund { - charge: 0.into(), - refund, - } + Deletion => ChargeAndRefund { + charge: 0.into(), + refund: metadata.total_deposit().into(), }, } } diff --git a/aptos-move/aptos-vm-types/src/tests/test_change_set.rs b/aptos-move/aptos-vm-types/src/tests/test_change_set.rs index d78f8c8f8c34b..e91c50a280ffa 100644 --- a/aptos-move/aptos-vm-types/src/tests/test_change_set.rs +++ b/aptos-move/aptos-vm-types/src/tests/test_change_set.rs @@ -385,8 +385,8 @@ fn test_roundtrip_to_storage_change_set() { ); let module_key = StateKey::access_path(AccessPath::code_access_path(test_module_id)); let write_set = WriteSetMut::new(vec![ - (resource_key, WriteOp::Deletion), - (module_key, WriteOp::Deletion), + (resource_key, WriteOp::legacy_deletion()), + (module_key, WriteOp::legacy_deletion()), ]) .freeze() .unwrap(); @@ -502,19 +502,19 @@ fn test_aggregator_v2_snapshots_and_derived() { #[test] fn test_resource_groups_squashing() { - let modification_metadata = WriteOp::ModificationWithMetadata { + let modification_metadata = WriteOp::Modification { data: Bytes::new(), metadata: raw_metadata(2000), }; macro_rules! as_create_op { ($val:expr) => { - (WriteOp::Creation(as_bytes!($val).into()), None) + (WriteOp::legacy_creation(as_bytes!($val).into()), None) }; } macro_rules! as_modify_op { ($val:expr) => { - (WriteOp::Modification(as_bytes!($val).into()), None) + (WriteOp::legacy_modification(as_bytes!($val).into()), None) }; } @@ -649,18 +649,18 @@ fn test_write_and_read_discrepancy_caught() { assert_err!(ExpandedVMChangeSetBuilder::new() .with_resource_write_set(vec![( as_state_key!("1"), - (WriteOp::Modification(as_bytes!(1).into()), None), + (WriteOp::legacy_modification(as_bytes!(1).into()), None), )]) .with_reads_needing_delayed_field_exchange(vec![( as_state_key!("1"), ( - WriteOp::Modification(as_bytes!(1).into()), + WriteOp::legacy_modification(as_bytes!(1).into()), Arc::new(MoveTypeLayout::U64) ) )]) .try_build()); - let metadata_op = WriteOp::ModificationWithMetadata { + let metadata_op = WriteOp::Modification { data: Bytes::new(), metadata: raw_metadata(1000), }; @@ -696,15 +696,15 @@ mod tests { pub(crate) fn write_op_with_metadata(type_idx: u8, v: u128) -> WriteOp { match type_idx { - CREATION => WriteOp::CreationWithMetadata { + CREATION => WriteOp::Creation { data: vec![].into(), metadata: raw_metadata(v as u64), }, - MODIFICATION => WriteOp::ModificationWithMetadata { + MODIFICATION => WriteOp::Modification { data: vec![].into(), metadata: raw_metadata(v as u64), }, - DELETION => WriteOp::DeletionWithMetadata { + DELETION => WriteOp::Deletion { metadata: raw_metadata(v as u64), }, _ => unreachable!("Wrong type index for test"), @@ -741,9 +741,9 @@ mod tests { #[test] fn test_group_write_size() { // Deletions should lead to size 0. - assert_group_write_size!(WriteOp::Deletion, 0, None); + assert_group_write_size!(WriteOp::legacy_deletion(), 0, None); assert_group_write_size!( - WriteOp::DeletionWithMetadata { + WriteOp::Deletion { metadata: raw_metadata(10) }, 0, @@ -751,9 +751,13 @@ mod tests { ); let sizes = [20, 100, 45279432, 5]; - assert_group_write_size!(WriteOp::Creation(Bytes::new()), sizes[0], Some(sizes[0])); assert_group_write_size!( - WriteOp::CreationWithMetadata { + WriteOp::legacy_creation(Bytes::new()), + sizes[0], + Some(sizes[0]) + ); + assert_group_write_size!( + WriteOp::Creation { data: Bytes::new(), metadata: raw_metadata(20) }, @@ -761,12 +765,12 @@ mod tests { Some(sizes[1]) ); assert_group_write_size!( - WriteOp::Modification(Bytes::new()), + WriteOp::legacy_modification(Bytes::new()), sizes[2], Some(sizes[2]) ); assert_group_write_size!( - WriteOp::ModificationWithMetadata { + WriteOp::Modification { data: Bytes::new(), metadata: raw_metadata(30) }, @@ -797,13 +801,13 @@ mod tests { )); assert_eq!(base_update.len(), 2); - assert_some_eq!( + assert_eq!( extract_group_op(base_update.get(&key_1).unwrap()) .metadata_op .metadata(), &raw_metadata(100) ); - assert_some_eq!( + assert_eq!( extract_group_op(base_update.get(&key_2).unwrap()) .metadata_op .metadata(), @@ -826,7 +830,7 @@ mod tests { ); additional_update.insert( key.clone(), - group_write(write_op_with_metadata(additional_type_idx, 200), vec![], 0), + group_write(write_op_with_metadata(additional_type_idx, 100), vec![], 0), ); assert_ok!(VMChangeSet::squash_additional_resource_writes( @@ -835,7 +839,7 @@ mod tests { )); assert_eq!(base_update.len(), 1); - assert_some_eq!( + assert_eq!( extract_group_op(base_update.get(&key).unwrap()) .metadata_op .metadata(), @@ -885,7 +889,7 @@ mod tests { additional_update.insert( key.clone(), group_write( - write_op_with_metadata(DELETION, 200), // delete + write_op_with_metadata(DELETION, 100), // delete vec![], 0, ), @@ -905,14 +909,20 @@ mod tests { let mut base_update = BTreeMap::new(); let mut additional_update = BTreeMap::new(); - // TODO[agg_v2](test): Harcoding type layout to None. Test with layout = Some(..) + // TODO[agg_v2](test): Hardcoding type layout to None. Test with layout = Some(..) base_update.insert( key_1.clone(), group_write( write_op_with_metadata(MODIFICATION, 100), vec![ - (mock_tag_0(), (WriteOp::Creation(vec![100].into()), None)), - (mock_tag_2(), (WriteOp::Modification(vec![2].into()), None)), + ( + mock_tag_0(), + (WriteOp::legacy_creation(vec![100].into()), None), + ), + ( + mock_tag_2(), + (WriteOp::legacy_modification(vec![2].into()), None), + ), ], 0, ), @@ -920,10 +930,16 @@ mod tests { additional_update.insert( key_1.clone(), group_write( - write_op_with_metadata(MODIFICATION, 200), + write_op_with_metadata(MODIFICATION, 100), vec![ - (mock_tag_0(), (WriteOp::Modification(vec![0].into()), None)), - (mock_tag_1(), (WriteOp::Modification(vec![1].into()), None)), + ( + mock_tag_0(), + (WriteOp::legacy_modification(vec![0].into()), None), + ), + ( + mock_tag_1(), + (WriteOp::legacy_modification(vec![1].into()), None), + ), ], 0, ), @@ -934,9 +950,15 @@ mod tests { group_write( write_op_with_metadata(MODIFICATION, 100), vec![ - (mock_tag_0(), (WriteOp::Deletion, None)), - (mock_tag_1(), (WriteOp::Modification(vec![2].into()), None)), - (mock_tag_2(), (WriteOp::Creation(vec![2].into()), None)), + (mock_tag_0(), (WriteOp::legacy_deletion(), None)), + ( + mock_tag_1(), + (WriteOp::legacy_modification(vec![2].into()), None), + ), + ( + mock_tag_2(), + (WriteOp::legacy_creation(vec![2].into()), None), + ), ], 0, ), @@ -944,11 +966,14 @@ mod tests { additional_update.insert( key_2.clone(), group_write( - write_op_with_metadata(MODIFICATION, 200), + write_op_with_metadata(MODIFICATION, 100), vec![ - (mock_tag_0(), (WriteOp::Creation(vec![0].into()), None)), - (mock_tag_1(), (WriteOp::Deletion, None)), - (mock_tag_2(), (WriteOp::Deletion, None)), + ( + mock_tag_0(), + (WriteOp::legacy_creation(vec![0].into()), None), + ), + (mock_tag_1(), (WriteOp::legacy_deletion(), None)), + (mock_tag_2(), (WriteOp::legacy_deletion(), None)), ], 0, ), @@ -963,29 +988,32 @@ mod tests { assert_eq!(inner_ops_1.len(), 3); assert_some_eq!( inner_ops_1.get(&mock_tag_0()), - &(WriteOp::Creation(vec![0].into()), None) + &(WriteOp::legacy_creation(vec![0].into()), None) ); assert_some_eq!( inner_ops_1.get(&mock_tag_1()), - &(WriteOp::Modification(vec![1].into()), None) + &(WriteOp::legacy_modification(vec![1].into()), None) ); assert_some_eq!( inner_ops_1.get(&mock_tag_2()), - &(WriteOp::Modification(vec![2].into()), None) + &(WriteOp::legacy_modification(vec![2].into()), None) ); let inner_ops_2 = &extract_group_op(base_update.get(&key_2).unwrap()).inner_ops; assert_eq!(inner_ops_2.len(), 2); assert_some_eq!( inner_ops_2.get(&mock_tag_0()), - &(WriteOp::Modification(vec![0].into()), None) + &(WriteOp::legacy_modification(vec![0].into()), None) + ); + assert_some_eq!( + inner_ops_2.get(&mock_tag_1()), + &(WriteOp::legacy_deletion(), None) ); - assert_some_eq!(inner_ops_2.get(&mock_tag_1()), &(WriteOp::Deletion, None)); let additional_update = BTreeMap::from([( key_2.clone(), group_write( - write_op_with_metadata(MODIFICATION, 200), - vec![(mock_tag_1(), (WriteOp::Deletion, None))], + write_op_with_metadata(MODIFICATION, 100), + vec![(mock_tag_1(), (WriteOp::legacy_deletion(), None))], 0, ), )]); diff --git a/aptos-move/aptos-vm-types/src/tests/utils.rs b/aptos-move/aptos-vm-types/src/tests/utils.rs index 1e985c9d1dabf..37bd9fe573dec 100644 --- a/aptos-move/aptos-vm-types/src/tests/utils.rs +++ b/aptos-move/aptos-vm-types/src/tests/utils.rs @@ -59,19 +59,25 @@ macro_rules! as_bytes { pub(crate) use as_bytes; pub(crate) fn raw_metadata(v: u64) -> StateValueMetadata { - StateValueMetadata::new(v, &CurrentTimeMicroseconds { microseconds: v }) + StateValueMetadata::legacy(v, &CurrentTimeMicroseconds { microseconds: v }) } pub(crate) fn mock_create(k: impl ToString, v: u128) -> (StateKey, WriteOp) { - (as_state_key!(k), WriteOp::Creation(as_bytes!(v).into())) + ( + as_state_key!(k), + WriteOp::legacy_creation(as_bytes!(v).into()), + ) } pub(crate) fn mock_modify(k: impl ToString, v: u128) -> (StateKey, WriteOp) { - (as_state_key!(k), WriteOp::Modification(as_bytes!(v).into())) + ( + as_state_key!(k), + WriteOp::legacy_modification(as_bytes!(v).into()), + ) } pub(crate) fn mock_delete(k: impl ToString) -> (StateKey, WriteOp) { - (as_state_key!(k), WriteOp::Deletion) + (as_state_key!(k), WriteOp::legacy_deletion()) } pub(crate) fn mock_create_with_layout( @@ -82,7 +88,7 @@ pub(crate) fn mock_create_with_layout( ( as_state_key!(k), AbstractResourceWriteOp::from_resource_write_with_maybe_layout( - WriteOp::Creation(as_bytes!(v).into()), + WriteOp::legacy_creation(as_bytes!(v).into()), layout, ), ) @@ -96,7 +102,7 @@ pub(crate) fn mock_modify_with_layout( ( as_state_key!(k), AbstractResourceWriteOp::from_resource_write_with_maybe_layout( - WriteOp::Modification(as_bytes!(v).into()), + WriteOp::legacy_modification(as_bytes!(v).into()), layout, ), ) @@ -105,7 +111,10 @@ pub(crate) fn mock_modify_with_layout( pub(crate) fn mock_delete_with_layout(k: impl ToString) -> (StateKey, AbstractResourceWriteOp) { ( as_state_key!(k), - AbstractResourceWriteOp::from_resource_write_with_maybe_layout(WriteOp::Deletion, None), + AbstractResourceWriteOp::from_resource_write_with_maybe_layout( + WriteOp::legacy_deletion(), + None, + ), ) } diff --git a/aptos-move/aptos-vm/src/data_cache.rs b/aptos-move/aptos-vm/src/data_cache.rs index b06db54853edd..02f09117d577b 100644 --- a/aptos-move/aptos-vm/src/data_cache.rs +++ b/aptos-move/aptos-vm/src/data_cache.rs @@ -26,7 +26,7 @@ use aptos_types::{ state_store::{ state_key::StateKey, state_storage_usage::StateStorageUsage, - state_value::{StateValue, StateValueMetadataKind}, + state_value::{StateValue, StateValueMetadata}, }, write_set::WriteOp, }; @@ -389,7 +389,7 @@ impl<'e, E: ExecutorView> StateValueMetadataResolver for StorageAdapter<'e, E> { fn get_module_state_value_metadata( &self, state_key: &StateKey, - ) -> anyhow::Result> { + ) -> anyhow::Result> { self.executor_view .get_module_state_value_metadata(state_key) } @@ -397,7 +397,7 @@ impl<'e, E: ExecutorView> StateValueMetadataResolver for StorageAdapter<'e, E> { fn get_resource_state_value_metadata( &self, state_key: &StateKey, - ) -> anyhow::Result> { + ) -> anyhow::Result> { self.executor_view .get_resource_state_value_metadata(state_key) } diff --git a/aptos-move/aptos-vm/src/move_vm_ext/respawned_session.rs b/aptos-move/aptos-vm/src/move_vm_ext/respawned_session.rs index 809377af213c5..0084a9083baf1 100644 --- a/aptos-move/aptos-vm/src/move_vm_ext/respawned_session.rs +++ b/aptos-move/aptos-vm/src/move_vm_ext/respawned_session.rs @@ -23,7 +23,7 @@ use aptos_types::{ state_store::{ state_key::StateKey, state_storage_usage::StateStorageUsage, - state_value::{StateValue, StateValueMetadataKind}, + state_value::{StateValue, StateValueMetadata}, }, write_set::{TransactionWrite, WriteOp}, }; @@ -357,7 +357,7 @@ impl<'r> TResourceView for ExecutorViewWithChangeSet<'r> { fn get_resource_state_value_metadata( &self, state_key: &Self::Key, - ) -> anyhow::Result> { + ) -> anyhow::Result> { match self.change_set.resource_write_set().get(state_key) { Some( AbstractResourceWriteOp::Write(write_op) @@ -487,7 +487,7 @@ mod test { } fn write(v: u128) -> WriteOp { - WriteOp::Modification(serialize(&v).into()) + WriteOp::legacy_modification(serialize(&v).into()) } fn read_resource(view: &ExecutorViewWithChangeSet, s: impl ToString) -> u128 { @@ -586,15 +586,15 @@ mod test { ( key("resource_group_both"), GroupWrite::new( - WriteOp::Deletion, + WriteOp::legacy_deletion(), vec![ ( mock_tag_0(), - (WriteOp::Modification(serialize(&1000).into()), None), + (WriteOp::legacy_modification(serialize(&1000).into()), None), ), ( mock_tag_2(), - (WriteOp::Modification(serialize(&300).into()), None), + (WriteOp::legacy_modification(serialize(&300).into()), None), ), ], 0, @@ -603,10 +603,10 @@ mod test { ( key("resource_group_write_set"), GroupWrite::new( - WriteOp::Deletion, + WriteOp::legacy_deletion(), vec![( mock_tag_1(), - (WriteOp::Modification(serialize(&5000).into()), None), + (WriteOp::legacy_modification(serialize(&5000).into()), None), )], 0, ), diff --git a/aptos-move/aptos-vm/src/move_vm_ext/write_op_converter.rs b/aptos-move/aptos-vm/src/move_vm_ext/write_op_converter.rs index da08af9f31887..c39fdb70ce24c 100644 --- a/aptos-move/aptos-vm/src/move_vm_ext/write_op_converter.rs +++ b/aptos-move/aptos-vm/src/move_vm_ext/write_op_converter.rs @@ -5,10 +5,7 @@ use crate::move_vm_ext::{session::BytesWithResourceLayout, AptosMoveResolver}; use aptos_aggregator::delta_change_set::serialize; use aptos_types::{ on_chain_config::{CurrentTimeMicroseconds, OnChainConfig}, - state_store::{ - state_key::StateKey, - state_value::{StateValueMetadata, StateValueMetadataKind}, - }, + state_store::{state_key::StateKey, state_value::StateValueMetadata}, write_set::WriteOp, }; use aptos_vm_types::{ @@ -154,7 +151,7 @@ impl<'r> WriteOpConverter<'r> { if let Some(current_time) = CurrentTimeMicroseconds::fetch_config(remote) { // The deposit on the metadata is a placeholder (0), it will be updated later when // storage fee is charged. - new_slot_metadata = Some(StateValueMetadata::new(0, ¤t_time)); + new_slot_metadata = Some(StateValueMetadata::placeholder(¤t_time)); } } @@ -247,11 +244,13 @@ impl<'r> WriteOpConverter<'r> { }; let legacy_op = match current_op { - MoveStorageOp::Delete => (WriteOp::Deletion, None), + MoveStorageOp::Delete => (WriteOp::legacy_deletion(), None), MoveStorageOp::Modify((data, maybe_layout)) => { - (WriteOp::Modification(data), maybe_layout) + (WriteOp::legacy_modification(data), maybe_layout) + }, + MoveStorageOp::New((data, maybe_layout)) => { + (WriteOp::legacy_creation(data), maybe_layout) }, - MoveStorageOp::New((data, maybe_layout)) => (WriteOp::Creation(data), maybe_layout), }; inner_ops.insert(tag, legacy_op); } @@ -279,7 +278,7 @@ impl<'r> WriteOpConverter<'r> { fn convert( &self, - state_value_metadata_result: anyhow::Result>, + state_value_metadata_result: anyhow::Result>, move_storage_op: MoveStorageOp, legacy_creation_as_modification: bool, ) -> Result { @@ -311,28 +310,27 @@ impl<'r> WriteOpConverter<'r> { (None, New((data, _))) => match &self.new_slot_metadata { None => { if legacy_creation_as_modification { - Modification(data) + WriteOp::legacy_modification(data) } else { - Creation(data) + WriteOp::legacy_creation(data) } }, - Some(metadata) => CreationWithMetadata { + Some(metadata) => Creation { data, metadata: metadata.clone(), }, }, (Some(existing_metadata), Modify((data, _))) => { // Inherit metadata even if the feature flags is turned off, for compatibility. - match existing_metadata { - None => Modification(data), - Some(metadata) => ModificationWithMetadata { data, metadata }, + Modification { + data, + metadata: existing_metadata, } }, (Some(existing_metadata), Delete) => { // Inherit metadata even if the feature flags is turned off, for compatibility. - match existing_metadata { - None => Deletion, - Some(metadata) => DeletionWithMetadata { metadata }, + Deletion { + metadata: existing_metadata, } }, }; @@ -359,17 +357,14 @@ impl<'r> WriteOpConverter<'r> { None => { match &self.new_slot_metadata { // n.b. Aggregator writes historically did not distinguish Create vs Modify. - None => WriteOp::Modification(data), - Some(metadata) => WriteOp::CreationWithMetadata { + None => WriteOp::legacy_modification(data), + Some(metadata) => WriteOp::Creation { data, metadata: metadata.clone(), }, } }, - Some(existing_metadata) => match existing_metadata { - None => WriteOp::Modification(data), - Some(metadata) => WriteOp::ModificationWithMetadata { data, metadata }, - }, + Some(metadata) => WriteOp::Modification { data, metadata }, }; Ok(op) @@ -396,7 +391,7 @@ mod tests { }; fn raw_metadata(v: u64) -> StateValueMetadata { - StateValueMetadata::new(v, &CurrentTimeMicroseconds { microseconds: v }) + StateValueMetadata::legacy(v, &CurrentTimeMicroseconds { microseconds: v }) } // TODO: Can re-use some of these testing definitions with aptos-vm-types. @@ -488,7 +483,7 @@ mod tests { .convert_resource_group_v1(&key, group_changes) .unwrap(); - assert_eq!(group_write.metadata_op().metadata(), Some(&metadata)); + assert_eq!(group_write.metadata_op().metadata(), &metadata); let expected_new_size = bcs::serialized_size(&mock_tag_1()).unwrap() + bcs::serialized_size(&mock_tag_2()).unwrap() + 7; // values bytes size: 2 + 5 @@ -496,11 +491,14 @@ mod tests { assert_eq!(group_write.inner_ops().len(), 2); assert_some_eq!( group_write.inner_ops().get(&mock_tag_0()), - &(WriteOp::Deletion, None) + &(WriteOp::legacy_deletion(), None) ); assert_some_eq!( group_write.inner_ops().get(&mock_tag_2()), - &(WriteOp::Modification(vec![5, 5, 5, 5, 5].into()), None) + &( + WriteOp::legacy_modification(vec![5, 5, 5, 5, 5].into()), + None + ) ); } @@ -532,7 +530,7 @@ mod tests { .convert_resource_group_v1(&key, group_changes) .unwrap(); - assert_eq!(group_write.metadata_op().metadata(), Some(&metadata)); + assert_eq!(group_write.metadata_op().metadata(), &metadata); let expected_new_size = bcs::serialized_size(&mock_tag_0()).unwrap() + bcs::serialized_size(&mock_tag_1()).unwrap() + bcs::serialized_size(&mock_tag_2()).unwrap() @@ -541,7 +539,7 @@ mod tests { assert_eq!(group_write.inner_ops().len(), 1); assert_some_eq!( group_write.inner_ops().get(&mock_tag_2()), - &(WriteOp::Creation(vec![3, 3, 3].into()), None) + &(WriteOp::legacy_creation(vec![3, 3, 3].into()), None) ); } @@ -561,13 +559,13 @@ mod tests { .convert_resource_group_v1(&key, group_changes) .unwrap(); - assert_none!(group_write.metadata_op().metadata()); + assert!(group_write.metadata_op().metadata().is_none()); let expected_new_size = bcs::serialized_size(&mock_tag_1()).unwrap() + 2; assert_some_eq!(group_write.maybe_group_op_size(), expected_new_size as u64); assert_eq!(group_write.inner_ops().len(), 1); assert_some_eq!( group_write.inner_ops().get(&mock_tag_1()), - &(WriteOp::Creation(vec![2, 2].into()), None) + &(WriteOp::legacy_creation(vec![2, 2].into()), None) ); } @@ -599,10 +597,8 @@ mod tests { .unwrap(); // Deletion should still contain the metadata - for storage refunds. - assert_eq!(group_write.metadata_op().metadata(), Some(&metadata)); - assert_eq!(group_write.metadata_op(), &WriteOp::DeletionWithMetadata { - metadata - }); + assert_eq!(group_write.metadata_op().metadata(), &metadata); + assert_eq!(group_write.metadata_op(), &WriteOp::Deletion { metadata }); assert_none!(group_write.metadata_op().bytes()); } } diff --git a/aptos-move/block-executor/src/captured_reads.rs b/aptos-move/block-executor/src/captured_reads.rs index 8729852ca2490..3e89062a167c7 100644 --- a/aptos-move/block-executor/src/captured_reads.rs +++ b/aptos-move/block-executor/src/captured_reads.rs @@ -20,7 +20,7 @@ use aptos_mvhashmap::{ versioned_group_data::VersionedGroupData, }; use aptos_types::{ - aggregator::PanicError, state_store::state_value::StateValueMetadataKind, + aggregator::PanicError, state_store::state_value::StateValueMetadata, transaction::BlockExecutableTransaction as Transaction, write_set::TransactionWrite, }; use aptos_vm_types::resolver::ResourceGroupSize; @@ -63,7 +63,7 @@ pub(crate) enum DataRead { #[derivative(PartialEq = "ignore", Debug = "ignore")] Arc, Option>, ), - Metadata(Option), + Metadata(Option), Exists(bool), /// Read resolved an aggregatorV1 delta to a value. /// TODO[agg_v1](cleanup): deprecate. @@ -138,7 +138,9 @@ impl DataRead { DataRead::Metadata(v.as_state_value_metadata()) }, (DataRead::Versioned(_, v, _), ReadKind::Exists) => DataRead::Exists(!v.is_deletion()), - (DataRead::Resolved(_), ReadKind::Metadata) => DataRead::Metadata(Some(None)), + (DataRead::Resolved(_), ReadKind::Metadata) => { + DataRead::Metadata(Some(StateValueMetadata::none())) + }, (DataRead::Resolved(_), ReadKind::Exists) => DataRead::Exists(true), (DataRead::Metadata(maybe_metadata), ReadKind::Exists) => { DataRead::Exists(maybe_metadata.is_some()) @@ -757,7 +759,10 @@ mod test { assert_eq!( DataRead::Versioned( Err(StorageVersion), - Arc::new(ValueType::with_len_and_metadata(1, None)), + Arc::new(ValueType::with_len_and_metadata( + 1, + StateValueMetadata::none() + )), None, ) .get_kind(), @@ -768,7 +773,7 @@ mod test { ReadKind::Value ); assert_eq!( - DataRead::Metadata::(Some(None)).get_kind(), + DataRead::Metadata::(Some(StateValueMetadata::none())).get_kind(), ReadKind::Metadata ); assert_eq!( @@ -822,12 +827,18 @@ mod test { // Legacy state values do not have metadata. let versioned_legacy = DataRead::Versioned( Err(StorageVersion), - Arc::new(ValueType::with_len_and_metadata(1, None)), + Arc::new(ValueType::with_len_and_metadata( + 1, + StateValueMetadata::none(), + )), None, ); let versioned_deletion = DataRead::Versioned( Ok((5, 1)), - Arc::new(ValueType::with_len_and_metadata(0, None)), + Arc::new(ValueType::with_len_and_metadata( + 0, + StateValueMetadata::none(), + )), None, ); let versioned_with_metadata = DataRead::Versioned( @@ -837,7 +848,7 @@ mod test { ); let resolved = DataRead::Resolved::(200); let deletion_metadata = DataRead::Metadata(None); - let legacy_metadata = DataRead::Metadata(Some(None)); + let legacy_metadata = DataRead::Metadata(Some(StateValueMetadata::none())); let metadata = DataRead::Metadata(Some(raw_metadata(1))); let exists = DataRead::Exists(true); let not_exists = DataRead::Exists(false); @@ -898,7 +909,10 @@ mod test { versioned_legacy, DataRead::Versioned( Err(StorageVersion), - Arc::new(ValueType::with_len_and_metadata(10, None)), + Arc::new(ValueType::with_len_and_metadata( + 10, + StateValueMetadata::none() + )), None, ) ); @@ -966,12 +980,18 @@ mod test { // Legacy state values do not have metadata. let versioned_legacy = DataRead::Versioned( Err(StorageVersion), - Arc::new(ValueType::with_len_and_metadata(1, None)), + Arc::new(ValueType::with_len_and_metadata( + 1, + StateValueMetadata::none(), + )), None, ); let versioned_deletion = DataRead::Versioned( Ok((5, 1)), - Arc::new(ValueType::with_len_and_metadata(0, None)), + Arc::new(ValueType::with_len_and_metadata( + 0, + StateValueMetadata::none(), + )), None, ); let versioned_with_metadata = DataRead::Versioned( @@ -981,7 +1001,7 @@ mod test { ); let resolved = DataRead::Resolved::(200); let deletion_metadata = DataRead::Metadata(None); - let legacy_metadata = DataRead::Metadata(Some(None)); + let legacy_metadata = DataRead::Metadata(Some(StateValueMetadata::none())); let metadata = DataRead::Metadata(Some(raw_metadata(1))); let exists = DataRead::Exists(true); let not_exists = DataRead::Exists(false); @@ -1049,10 +1069,13 @@ mod test { fn legacy_reads_by_kind() -> Vec> { let exists = DataRead::Exists(true); - let legacy_metadata = DataRead::Metadata(Some(None)); + let legacy_metadata = DataRead::Metadata(Some(StateValueMetadata::none())); let versioned_legacy = DataRead::Versioned( Err(StorageVersion), - Arc::new(ValueType::with_len_and_metadata(1, None)), + Arc::new(ValueType::with_len_and_metadata( + 1, + StateValueMetadata::none(), + )), None, ); vec![exists, legacy_metadata, versioned_legacy] @@ -1061,7 +1084,10 @@ mod test { fn deletion_reads_by_kind() -> Vec> { let versioned_deletion = DataRead::Versioned( Ok((5, 1)), - Arc::new(ValueType::with_len_and_metadata(0, None)), + Arc::new(ValueType::with_len_and_metadata( + 0, + StateValueMetadata::none(), + )), None, ); let deletion_metadata = DataRead::Metadata(None); @@ -1218,7 +1244,10 @@ mod test { let mut captured_reads = CapturedReads::::new(); let versioned_legacy = DataRead::Versioned( Err(StorageVersion), - Arc::new(ValueType::with_len_and_metadata(1, None)), + Arc::new(ValueType::with_len_and_metadata( + 1, + StateValueMetadata::none(), + )), None, ); let resolved = DataRead::Resolved::(200); diff --git a/aptos-move/block-executor/src/executor.rs b/aptos-move/block-executor/src/executor.rs index 2bccd05b72b7a..e59a6d2641576 100644 --- a/aptos-move/block-executor/src/executor.rs +++ b/aptos-move/block-executor/src/executor.rs @@ -785,8 +785,10 @@ where }); // Must contain committed value as we set the base value above. - aggregator_v1_delta_writes - .push((k, WriteOp::Modification(serialize(&committed_delta).into()))); + aggregator_v1_delta_writes.push(( + k, + WriteOp::legacy_modification(serialize(&committed_delta).into()), + )); } aggregator_v1_delta_writes } diff --git a/aptos-move/block-executor/src/proptest_types/types.rs b/aptos-move/block-executor/src/proptest_types/types.rs index 885b0b03e143d..c4154af422e27 100644 --- a/aptos-move/block-executor/src/proptest_types/types.rs +++ b/aptos-move/block-executor/src/proptest_types/types.rs @@ -23,7 +23,7 @@ use aptos_types::{ on_chain_config::CurrentTimeMicroseconds, state_store::{ state_storage_usage::StateStorageUsage, - state_value::{StateValue, StateValueMetadata, StateValueMetadataKind}, + state_value::{StateValue, StateValueMetadata}, }, transaction::BlockExecutableTransaction as Transaction, write_set::{TransactionWrite, WriteOp, WriteOpKind}, @@ -174,7 +174,7 @@ impl ModulePath for KeyType pub(crate) struct ValueType { /// Wrapping the types used for testing to add TransactionWrite trait implementation (below). bytes: Option, - metadata: StateValueMetadataKind, + metadata: StateValueMetadata, write_op_kind: ExplicitSyncWrapper, } @@ -206,7 +206,7 @@ impl Arbitrary for ValueType { impl ValueType { pub(crate) fn new( bytes: Option, - metadata: StateValueMetadataKind, + metadata: StateValueMetadata, kind: WriteOpKind, ) -> Self { Self { @@ -229,7 +229,7 @@ impl ValueType { v.resize(16, 1); v.into() }), - metadata: None, + metadata: StateValueMetadata::none(), write_op_kind: ExplicitSyncWrapper::new( if !use_value { WriteOpKind::Deletion @@ -241,7 +241,7 @@ impl ValueType { } /// If len = 0, treated as Deletion for testing. - pub(crate) fn with_len_and_metadata(len: usize, metadata: StateValueMetadataKind) -> Self { + pub(crate) fn with_len_and_metadata(len: usize, metadata: StateValueMetadata) -> Self { Self { bytes: (len > 0).then_some(vec![100_u8; len].into()), metadata, @@ -263,9 +263,9 @@ impl TransactionWrite for ValueType { fn from_state_value(maybe_state_value: Option) -> Self { let (maybe_metadata, maybe_bytes) = - match maybe_state_value.map(|state_value| state_value.into()) { + match maybe_state_value.map(|state_value| state_value.unpack()) { Some((maybe_metadata, bytes)) => (maybe_metadata, Some(bytes)), - None => (None, None), + None => (StateValueMetadata::none(), None), }; let empty = maybe_bytes.is_none(); @@ -288,10 +288,8 @@ impl TransactionWrite for ValueType { } fn as_state_value(&self) -> Option { - self.extract_raw_bytes().map(|bytes| match &self.metadata { - Some(metadata) => StateValue::new_with_metadata(bytes, metadata.clone()), - None => StateValue::new_legacy(bytes), - }) + self.extract_raw_bytes() + .map(|bytes| StateValue::new_with_metadata(bytes, self.metadata.clone())) } fn set_bytes(&mut self, bytes: Bytes) { @@ -932,7 +930,11 @@ where } else { new_inner_ops.insert( *tag, - ValueType::new(None, None, WriteOpKind::Deletion), + ValueType::new( + None, + StateValueMetadata::none(), + WriteOpKind::Deletion, + ), ); } } @@ -974,10 +976,8 @@ where } } -pub(crate) fn raw_metadata(v: u64) -> StateValueMetadataKind { - Some(StateValueMetadata::new(v, &CurrentTimeMicroseconds { - microseconds: v, - })) +pub(crate) fn raw_metadata(v: u64) -> StateValueMetadata { + StateValueMetadata::legacy(v, &CurrentTimeMicroseconds { microseconds: v }) } #[derive(Debug)] diff --git a/aptos-move/block-executor/src/view.rs b/aptos-move/block-executor/src/view.rs index 14005573893dd..5967af6670d69 100644 --- a/aptos-move/block-executor/src/view.rs +++ b/aptos-move/block-executor/src/view.rs @@ -39,7 +39,7 @@ use aptos_types::{ executable::{Executable, ModulePath}, state_store::{ state_storage_usage::StateStorageUsage, - state_value::{StateValue, StateValueMetadataKind}, + state_value::{StateValue, StateValueMetadata}, }, transaction::BlockExecutableTransaction as Transaction, write_set::TransactionWrite, @@ -76,7 +76,7 @@ use std::{ #[derive(Debug)] pub(crate) enum ReadResult { Value(Option, Option>), - Metadata(Option), + Metadata(Option), Exists(bool), Uninitialized, // Must halt the execution of the calling transaction. This might be because @@ -1236,17 +1236,12 @@ impl<'a, T: Transaction, S: TStateView, X: Executable> LatestView< return None; } - if let Ok(Some(maybe_metadata)) = self.get_resource_state_value_metadata(&key) { - let maybe_metadata = maybe_metadata.map( - |metadata: aptos_types::state_store::state_value::StateValueMetadata| { - StateValue::new_with_metadata(Bytes::new(), metadata) - }, - ); + if let Ok(Some(metadata)) = self.get_resource_state_value_metadata(&key) { + let metadata = Some(StateValue::new_with_metadata(Bytes::new(), metadata)); if let Ok(GroupReadResult::Size(group_size)) = parallel_state.read_group_size(&key, self.txn_idx) { - let metadata_op: T::Value = - TransactionWrite::from_state_value(maybe_metadata); + let metadata_op: T::Value = TransactionWrite::from_state_value(metadata); if let Some(metadata_op) = metadata_op.convert_read_to_modification() { return Some(Ok((key.clone(), (metadata_op, group_size.get())))); } @@ -1447,7 +1442,7 @@ impl<'a, T: Transaction, S: TStateView, X: Executable> TResourceVi fn get_resource_state_value_metadata( &self, state_key: &Self::Key, - ) -> anyhow::Result> { + ) -> anyhow::Result> { self.get_resource_state_value_impl(state_key, UnknownOrLayout::Unknown, ReadKind::Metadata) .map(|res| { if let ReadResult::Metadata(v) = res { @@ -2936,7 +2931,7 @@ mod test { fn get_resource_state_value_metadata( &self, state_key: &KeyType, - ) -> anyhow::Result> { + ) -> anyhow::Result> { let seq = self .latest_view_seq .get_resource_state_value_metadata(state_key); diff --git a/aptos-move/e2e-move-tests/src/harness.rs b/aptos-move/e2e-move-tests/src/harness.rs index e83e6ab6b8a9e..bae4ce73077e4 100644 --- a/aptos-move/e2e-move-tests/src/harness.rs +++ b/aptos-move/e2e-move-tests/src/harness.rs @@ -559,7 +559,7 @@ impl MoveHarness { &self, addr: &AccountAddress, struct_tag: StructTag, - ) -> Option> { + ) -> Option { self.read_state_value(&StateKey::access_path( AccessPath::resource_access_path(*addr, struct_tag).expect("access path in test"), )) diff --git a/aptos-move/e2e-move-tests/src/tests/state_metadata.rs b/aptos-move/e2e-move-tests/src/tests/state_metadata.rs index 28488a7745a75..f35809d0ebe51 100644 --- a/aptos-move/e2e-move-tests/src/tests/state_metadata.rs +++ b/aptos-move/e2e-move-tests/src/tests/state_metadata.rs @@ -35,7 +35,7 @@ fn test_metadata_tracking() { // Observe that metadata is not tracked for address2 resources assert_eq!( harness.read_resource_metadata(&address2, coin_store.clone()), - Some(None), + Some(StateValueMetadata::none()), ); // Enable storage slot metadata tracking @@ -59,7 +59,7 @@ fn test_metadata_tracking() { // Observe that metadata is tracked for address3 resources assert_eq!( harness.read_resource_metadata(&address3, coin_store.clone()), - Some(Some(StateValueMetadata::new(slot_fee, ×tamp,))), + Some(StateValueMetadata::legacy(slot_fee, ×tamp)), ); // Bump the timestamp and modify the resources, observe that metadata doesn't change. @@ -74,10 +74,10 @@ fn test_metadata_tracking() { ); assert_eq!( harness.read_resource_metadata(&address2, coin_store.clone()), - Some(None), + Some(StateValueMetadata::none()), ); assert_eq!( harness.read_resource_metadata(&address3, coin_store), - Some(Some(StateValueMetadata::new(slot_fee, ×tamp))), + Some(StateValueMetadata::legacy(slot_fee, ×tamp)), ); } diff --git a/aptos-move/e2e-move-tests/src/tests/storage_refund.rs b/aptos-move/e2e-move-tests/src/tests/storage_refund.rs index 83d6c3f9458ab..a2203039d15f5 100644 --- a/aptos-move/e2e-move-tests/src/tests/storage_refund.rs +++ b/aptos-move/e2e-move-tests/src/tests/storage_refund.rs @@ -154,10 +154,14 @@ fn assert_result( let mut deletes = 0; for (_state_key, write_op) in txn_out.write_set() { match write_op { - WriteOp::CreationWithMetadata { .. } | WriteOp::Creation(_) => creates += 1, - WriteOp::DeletionWithMetadata { .. } => deletes += 1, - WriteOp::Deletion => panic!("This test expects all deletions to have metadata"), - WriteOp::Modification(_) | WriteOp::ModificationWithMetadata { .. } => (), + WriteOp::Creation { .. } => creates += 1, + WriteOp::Deletion { metadata } => { + if metadata.is_none() { + panic!("This test expects all deletions to have metadata") + } + deletes += 1 + }, + WriteOp::Modification { .. } => (), } } if expect_success { diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__create_account__create_account.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__create_account__create_account.exp index 7c31dfcaaca81..8718eb0e739c7 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__create_account__create_account.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__create_account__create_account.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xa550c18, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a000100000000000000040000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a550c1800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000a550c180000), + }: Modification(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a000100000000000000040000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a550c1800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000a550c180000, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(00000000000000000000000000000000000200000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000300000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(00000000000000000000000000000000000200000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000300000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000000000000000040000000000000001000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000000000000000040000000000000001000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__borrow_after_move.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__borrow_after_move.exp index c25c22e9ad981..0d74dd2bbb15c 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__borrow_after_move.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__borrow_after_move.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b06000000090100040204040308190521140735420877400ab701050cbc014f0d8b020200000101000208000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d067369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f66f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000000000000000000000000000000000010002010703000100010003050b0011042b000c0102010100010005090b0011042a000c020b010b020f001502020100010006060b0011042c0013000c01020301000001050b0006030000000000000012002d0002000000, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b06000000090100040204040308190521140735420877400ab701050cbc014f0d8b020200000101000208000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d067369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f66f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000000000000000000000000000000000010002010703000100010003050b0011042b000c0102010100010005090b0011042a000c020b010b020f001502020100010006060b0011042c0013000c01020301000001050b0006030000000000000012002d0002000000, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10c00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10c00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -66,11 +66,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10d00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10d00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M::T1)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(0300000000000000, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(0300000000000000, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), }, }, ), @@ -95,7 +95,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10e00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10e00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -120,11 +120,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10f00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10f00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M::T1)" }, hash: OnceCell(Uninit), - }: DeletionWithMetadata(metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Deletion(metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), }, }, ), @@ -145,7 +145,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11000000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11000000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__change_after_move.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__change_after_move.exp index cda2e0638bbbe..2cfd3c9193674 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__change_after_move.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__change_after_move.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b06000000090100040204040308190521140735420877400ab701050cbc014f0d8b020200000101000208000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d067369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f66f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000000000000000000000000000000000010002010703000100010003050b0011042b000c0102010100010005090b0011042a000c020b010b020f001502020100010006060b0011042c0013000c01020301000001050b0006030000000000000012002d0002000000, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b06000000090100040204040308190521140735420877400ab701050cbc014f0d8b020200000101000208000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d067369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f66f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000000000000000000000000000000000010002010703000100010003050b0011042b000c0102010100010005090b0011042a000c020b010b020f001502020100010006060b0011042c0013000c01020301000001050b0006030000000000000012002d0002000000, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10c00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10c00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -66,11 +66,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10d00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10d00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M::T1)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(0300000000000000, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(0300000000000000, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), }, }, ), @@ -95,7 +95,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10e00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10e00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -120,11 +120,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10f00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10f00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M::T1)" }, hash: OnceCell(Uninit), - }: DeletionWithMetadata(metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Deletion(metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), }, }, ), @@ -145,7 +145,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11000000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11000000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -174,7 +174,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11100000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11100000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__move_from_across_blocks.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__move_from_across_blocks.exp index 142baf271a19b..f6373ae9926a5 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__move_from_across_blocks.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__data_store__move_from_across_blocks.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b06000000090100040204040308190521140735420877400ab701050cbc014f0d8b020200000101000208000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d067369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f66f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000000000000000000000000000000000010002010703000100010003050b0011042b000c0102010100010005090b0011042a000c020b010b020f001502020100010006060b0011042c0013000c01020301000001050b0006030000000000000012002d0002000000, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b06000000090100040204040308190521140735420877400ab701050cbc014f0d8b020200000101000208000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d067369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f66f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000000000000000000000000000000000010002010703000100010003050b0011042b000c0102010100010005090b0011042a000c020b010b020f001502020100010006060b0011042c0013000c01020301000001050b0006030000000000000012002d0002000000, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10c00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10c00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -66,11 +66,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10d00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10d00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M::T1)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(0300000000000000, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(0300000000000000, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), }, }, ), @@ -95,7 +95,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10e00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10e00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -120,11 +120,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10f00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10f00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M::T1)" }, hash: OnceCell(Uninit), - }: DeletionWithMetadata(metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Deletion(metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), }, }, ), @@ -149,7 +149,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11000000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11000000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -178,7 +178,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11100000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11100000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -207,11 +207,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11200000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11200000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M::T1)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(0300000000000000, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(0300000000000000, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), }, }, ), @@ -236,11 +236,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M::T1)" }, hash: OnceCell(Uninit), - }: DeletionWithMetadata(metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Deletion(metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), }, }, ), @@ -261,7 +261,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe11400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__bad_module_address.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__bad_module_address.exp index 90c5b3e4984f1..b7e5e7b92cab2 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__bad_module_address.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__bad_module_address.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xd88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb9178680138, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013800000000000000000000000000000000d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb9178680138), + }: Modification(3c420f00000000000000000000000000000000000000000000d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013800000000000000000000000000000000d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb9178680138, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xd88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb9178680138, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb91786801380b00000000000000000000000000000000000000000000000000000000000000d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013800000000000000000100000000000000d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb91786801380000), + }: Modification(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb91786801380b00000000000000000000000000000000000000000000000000000000000000d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013800000000000000000100000000000000d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb91786801380000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__duplicate_module.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__duplicate_module.exp index 6623b36895403..56e71145388cf 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__duplicate_module.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__duplicate_module.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b0600000008010002020204030605050b01070c060812200a32050c3707000000010000000200000000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100020102030001000000010200, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b0600000008010002020204030605050b01070c060812200a32050c3707000000010000000200000000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100020102030001000000010200, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_compatible_module.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_compatible_module.exp index 928cdc4ae2a8c..8bc346118463c 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_compatible_module.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_compatible_module.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b06000000030100020702020804200000014df5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b06000000030100020702020804200000014df5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_changed_field.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_changed_field.exp index 0ba62cc4d4aea..0cc8a2b1adef9 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_changed_field.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_changed_field.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b0600000005010002020204070606080c200a2c05000000010000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1000201020300, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b0600000005010002020204070606080c200a2c05000000010000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1000201020300, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_new_field.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_new_field.exp index 0ba62cc4d4aea..0cc8a2b1adef9 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_new_field.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_new_field.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b0600000005010002020204070606080c200a2c05000000010000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1000201020300, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b0600000005010002020204070606080c200a2c05000000010000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1000201020300, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_removed_field.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_removed_field.exp index 0ba62cc4d4aea..0cc8a2b1adef9 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_removed_field.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_removed_field.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b0600000005010002020204070606080c200a2c05000000010000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1000201020300, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b0600000005010002020204070606080c200a2c05000000010000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1000201020300, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_removed_struct.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_removed_struct.exp index 0ba62cc4d4aea..0cc8a2b1adef9 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_removed_struct.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__layout_incompatible_module_with_removed_struct.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b0600000005010002020204070606080c200a2c05000000010000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1000201020300, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b0600000005010002020204070606080c200a2c05000000010000014d01540166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1000201020300, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_compatible_module.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_compatible_module.exp index 928cdc4ae2a8c..8bc346118463c 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_compatible_module.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_compatible_module.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b06000000030100020702020804200000014df5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b06000000030100020702020804200000014df5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_added_param.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_added_param.exp index 659c673a621b1..95fdc4f695617 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_added_param.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_added_param.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b0600000006010002030205050701070804080c200c2c070000000100000000014d0166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10001000000010200, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b0600000006010002030205050701070804080c200c2c070000000100000000014d0166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10001000000010200, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_changed_param.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_changed_param.exp index 7534c2e5a9b07..793756748a7a0 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_changed_param.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_changed_param.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b0600000006010002030205050703070a04080e200c2e0700000001000100010300014d0166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10001000001010200, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b0600000006010002030205050703070a04080e200c2e0700000001000100010300014d0166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10001000001010200, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_removed_pub_fn.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_removed_pub_fn.exp index 659c673a621b1..95fdc4f695617 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_removed_pub_fn.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__linking_incompatible_module_with_removed_pub_fn.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b0600000006010002030205050701070804080c200c2c070000000100000000014d0166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10001000000010200, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b0600000006010002030205050701070804080c200c2c070000000100000000014d0166f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10001000000010200, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10300000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), @@ -37,7 +37,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10400000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_allow_modules.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_allow_modules.exp index af6aff2c2bb09..0236c5cc13756 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_allow_modules.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_allow_modules.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b06000000030100020702020804200000014df5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b06000000030100020702020804200000014df5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_modules_invalid_sender.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_modules_invalid_sender.exp index b48fd2d1b8210..1fb10d9d80e82 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_modules_invalid_sender.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_modules_invalid_sender.exp @@ -8,7 +8,7 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_modules_proper_sender.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_modules_proper_sender.exp index a95eccb52fa55..b8d175a003fcf 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_modules_proper_sender.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__module_publishing__test_publishing_modules_proper_sender.exp @@ -8,11 +8,11 @@ Ok( StateKey { inner: AccessPath { address: 0xa550c18, path: "Code(000000000000000000000000000000000000000000000000000000000a550c18::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b06000000030100020702020804200000014d000000000000000000000000000000000000000000000000000000000a550c1800, metadata:V0 { deposit: 0, creation_time_usecs: 0 }), + }: Creation(a11ceb0b06000000030100020702020804200000014d000000000000000000000000000000000000000000000000000000000a550c1800, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 0, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xa550c18, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a000100000000000000040000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a550c1800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000a550c180000), + }: Modification(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a000100000000000000040000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a550c1800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000a550c180000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_bad_sig_function_dep.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_bad_sig_function_dep.exp index b8c25ba75fb89..d5bfc8098e35e 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_bad_sig_function_dep.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_bad_sig_function_dep.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_code_unverifiable.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_code_unverifiable.exp index 10bd2ee655373..11f2e2c1232fa 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_code_unverifiable.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_code_unverifiable.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_nested_type_argument_module_does_not_exist.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_nested_type_argument_module_does_not_exist.exp index b5e42e04622f9..613ef93540a43 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_nested_type_argument_module_does_not_exist.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_nested_type_argument_module_does_not_exist.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_non_existing_function_dep.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_non_existing_function_dep.exp index c7dd5f30982dc..651a42f2a15bc 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_non_existing_function_dep.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_non_existing_function_dep.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_none_existing_module_dep.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_none_existing_module_dep.exp index b5e42e04622f9..613ef93540a43 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_none_existing_module_dep.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_none_existing_module_dep.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_type_argument_module_does_not_exist.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_type_argument_module_does_not_exist.exp index b5e42e04622f9..613ef93540a43 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_type_argument_module_does_not_exist.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__scripts__script_type_argument_module_does_not_exist.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_arbitrary_script_execution.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_arbitrary_script_execution.exp index 6d0af95ca1c8b..456fda1cf3e3b 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_arbitrary_script_execution.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_arbitrary_script_execution.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_module_dependency_fails_verification.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_module_dependency_fails_verification.exp index d4c0593d238f7..544b665b854d0 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_module_dependency_fails_verification.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_module_dependency_fails_verification.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_module_transitive_dependency_fails_verification.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_module_transitive_dependency_fails_verification.exp index d4c0593d238f7..544b665b854d0 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_module_transitive_dependency_fails_verification.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_module_transitive_dependency_fails_verification.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_open_publishing.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_open_publishing.exp index c7bde137496dc..067a44c6d61e7 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_open_publishing.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_open_publishing.exp @@ -8,19 +8,19 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Code(f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1::M)" }, hash: OnceCell(Uninit), - }: CreationWithMetadata(a11ceb0b060000000601000203020a050c0607120a081c200c3c23000000010001000002000100020303010300014d036d61780373756df5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10001000002080a000a012403060a01020a00020101000001060a000a01160c020a020200, metadata:V0 { deposit: 50000, creation_time_usecs: 0 }), + }: Creation(a11ceb0b060000000601000203020a050c0607120a081c200c3c23000000010001000002000100020303010300014d036d61780373756df5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10001000002080a000a012403060a01020a00020101000001060a000a01160c020a020200, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 50000, bytes_deposit: 0, creation_time_usecs: 0 }) }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(20059a3b000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(20059a3b000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(1f1cf505000000000100000000000000), + }: Modification(1f1cf505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_open_publishing_invalid_address.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_open_publishing_invalid_address.exp index 43c87fa5d26d3..28dd78f205bb6 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_open_publishing_invalid_address.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_open_publishing_invalid_address.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_script_dependency_fails_verification.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_script_dependency_fails_verification.exp index d4c0593d238f7..544b665b854d0 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_script_dependency_fails_verification.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_script_dependency_fails_verification.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_script_transitive_dependency_fails_verification.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_script_transitive_dependency_fails_verification.exp index d4c0593d238f7..544b665b854d0 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_script_transitive_dependency_fails_verification.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_script_transitive_dependency_fails_verification.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_type_tag_dependency_fails_verification.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_type_tag_dependency_fails_verification.exp index d4c0593d238f7..544b665b854d0 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_type_tag_dependency_fails_verification.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_type_tag_dependency_fails_verification.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_type_tag_transitive_dependency_fails_verification.exp b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_type_tag_transitive_dependency_fails_verification.exp index d4c0593d238f7..544b665b854d0 100644 --- a/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_type_tag_transitive_dependency_fails_verification.exp +++ b/aptos-move/e2e-tests/goldens/language_e2e_testsuite__tests__verify_txn__test_type_tag_transitive_dependency_fails_verification.exp @@ -8,15 +8,15 @@ Ok( StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>)" }, hash: OnceCell(Uninit), - }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1), + }: Modification(3c420f00000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, metadata:StateValueMetadata { inner: None }), StateKey { inner: AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }, hash: OnceCell(Uninit), - }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000), + }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), StateKey { inner: TableItem { handle: 1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca, key: 0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935 }, hash: OnceCell(Uninit), - }: Modification(fbe0f505000000000100000000000000), + }: Modification(fbe0f505000000000100000000000000, metadata:StateValueMetadata { inner: None }), }, }, ), diff --git a/aptos-move/e2e-tests/src/account.rs b/aptos-move/e2e-tests/src/account.rs index 686d87d53f85f..71fdf07d3fc82 100644 --- a/aptos-move/e2e-tests/src/account.rs +++ b/aptos-move/e2e-tests/src/account.rs @@ -480,11 +480,11 @@ impl AccountData { let write_set = vec![ ( StateKey::access_path(self.make_account_access_path()), - WriteOp::Modification(self.to_bytes().into()), + WriteOp::legacy_modification(self.to_bytes().into()), ), ( StateKey::access_path(self.make_coin_store_access_path()), - WriteOp::Modification(self.coin_store.to_bytes().into()), + WriteOp::legacy_modification(self.coin_store.to_bytes().into()), ), ]; diff --git a/config/src/config/node_config_loader.rs b/config/src/config/node_config_loader.rs index 8aac07791a67f..5a9752dc01bc3 100644 --- a/config/src/config/node_config_loader.rs +++ b/config/src/config/node_config_loader.rs @@ -13,7 +13,6 @@ use aptos_types::{ on_chain_config::OnChainConfig, state_store::state_key::{StateKey, StateKeyInner}, transaction::{Transaction, WriteSetPayload}, - write_set::WriteOp, }; use serde_yaml::Value; use std::path::Path; @@ -184,17 +183,9 @@ fn get_chain_id(node_config: &NodeConfig) -> Result { })?; // Extract the chain ID from the write op - let write_op_bytes = match write_op { - WriteOp::Creation(bytes) => bytes, - WriteOp::Modification(bytes) => bytes, - WriteOp::CreationWithMetadata { data, metadata: _ } => data, - WriteOp::ModificationWithMetadata { data, metadata: _ } => data, - _ => { - return Err(Error::InvariantViolation( - "The genesis transaction does not contain the correct write op for the chain ID!".into(), - )); - }, - }; + let write_op_bytes = write_op.bytes().ok_or_else(|| Error::InvariantViolation( + "The genesis transaction does not contain the correct write op for the chain ID!".into(), + ))?; let chain_id = ChainId::deserialize_into_config(write_op_bytes).map_err(|error| { Error::InvariantViolation(format!( "Failed to deserialize the chain ID: {:?}", diff --git a/execution/executor-benchmark/src/native_executor.rs b/execution/executor-benchmark/src/native_executor.rs index 37e624d390583..60f0668dc3aaf 100644 --- a/execution/executor-benchmark/src/native_executor.rs +++ b/execution/executor-benchmark/src/native_executor.rs @@ -117,15 +117,15 @@ impl NativeExecutor { let write_set = vec![ ( sender_account_key, - WriteOp::Modification(bcs::to_bytes(&sender_account)?.into()), + WriteOp::legacy_modification(bcs::to_bytes(&sender_account)?.into()), ), ( sender_coin_store_key, - WriteOp::Modification(bcs::to_bytes(&sender_coin_store)?.into()), + WriteOp::legacy_modification(bcs::to_bytes(&sender_coin_store)?.into()), ), // ( // TOTAL_SUPPLY_STATE_KEY.clone(), - // WriteOp::Modification(bcs::to_bytes(&total_supply)?), + // WriteOp::legacy_modification(bcs::to_bytes(&total_supply)?), // ), ]; @@ -179,7 +179,7 @@ impl NativeExecutor { write_set.push(( recipient_coin_store_key, - WriteOp::Modification(bcs::to_bytes(&recipient_coin_store)?.into()), + WriteOp::legacy_modification(bcs::to_bytes(&recipient_coin_store)?.into()), )); } } else { @@ -215,11 +215,11 @@ impl NativeExecutor { write_set.push(( recipient_account_key, - WriteOp::Creation(bcs::to_bytes(&recipient_account)?.into()), + WriteOp::legacy_creation(bcs::to_bytes(&recipient_account)?.into()), )); write_set.push(( recipient_coin_store_key, - WriteOp::Creation(bcs::to_bytes(&recipient_coin_store)?.into()), + WriteOp::legacy_creation(bcs::to_bytes(&recipient_coin_store)?.into()), )); } diff --git a/execution/executor/src/mock_vm/mock_vm_test.rs b/execution/executor/src/mock_vm/mock_vm_test.rs index a3eb8077a16b2..f5a91ba4e266a 100644 --- a/execution/executor/src/mock_vm/mock_vm_test.rs +++ b/execution/executor/src/mock_vm/mock_vm_test.rs @@ -60,11 +60,11 @@ fn test_mock_vm_different_senders() { [ ( StateKey::access_path(balance_ap(sender)), - WriteOp::Modification(amount.le_bytes()), + WriteOp::legacy_modification(amount.le_bytes()), ), ( StateKey::access_path(seqnum_ap(sender)), - WriteOp::Modification(1u64.le_bytes()), + WriteOp::legacy_modification(1u64.le_bytes()), ), ] .into_iter() @@ -96,11 +96,11 @@ fn test_mock_vm_same_sender() { [ ( StateKey::access_path(balance_ap(sender)), - WriteOp::Modification((amount * (i as u64 + 1)).le_bytes()), + WriteOp::legacy_modification((amount * (i as u64 + 1)).le_bytes()), ), ( StateKey::access_path(seqnum_ap(sender)), - WriteOp::Modification((i as u64 + 1).le_bytes()), + WriteOp::legacy_modification((i as u64 + 1).le_bytes()), ), ] .into_iter() @@ -135,15 +135,15 @@ fn test_mock_vm_payment() { [ ( StateKey::access_path(balance_ap(gen_address(0))), - WriteOp::Modification(50u64.le_bytes()) + WriteOp::legacy_modification(50u64.le_bytes()) ), ( StateKey::access_path(seqnum_ap(gen_address(0))), - WriteOp::Modification(2u64.le_bytes()) + WriteOp::legacy_modification(2u64.le_bytes()) ), ( StateKey::access_path(balance_ap(gen_address(1))), - WriteOp::Modification(150u64.le_bytes()) + WriteOp::legacy_modification(150u64.le_bytes()) ), ] .into_iter() diff --git a/execution/executor/src/mock_vm/mod.rs b/execution/executor/src/mock_vm/mod.rs index 15e45c8ceb685..561abbfe5290c 100644 --- a/execution/executor/src/mock_vm/mod.rs +++ b/execution/executor/src/mock_vm/mod.rs @@ -270,14 +270,14 @@ fn gen_genesis_writeset() -> WriteSet { access_path_for_config(ValidatorSet::CONFIG_ID).expect("access path in test"); write_set.insert(( StateKey::access_path(validator_set_ap), - WriteOp::Modification(bcs::to_bytes(&ValidatorSet::new(vec![])).unwrap().into()), + WriteOp::legacy_modification(bcs::to_bytes(&ValidatorSet::new(vec![])).unwrap().into()), )); write_set.insert(( StateKey::access_path(AccessPath::new( CORE_CODE_ADDRESS, ConfigurationResource::resource_path(), )), - WriteOp::Modification( + WriteOp::legacy_modification( bcs::to_bytes(&ConfigurationResource::default()) .unwrap() .into(), @@ -292,11 +292,11 @@ fn gen_mint_writeset(sender: AccountAddress, balance: u64, seqnum: u64) -> Write let mut write_set = WriteSetMut::default(); write_set.insert(( StateKey::access_path(balance_ap(sender)), - WriteOp::Modification(balance.le_bytes()), + WriteOp::legacy_modification(balance.le_bytes()), )); write_set.insert(( StateKey::access_path(seqnum_ap(sender)), - WriteOp::Modification(seqnum.le_bytes()), + WriteOp::legacy_modification(seqnum.le_bytes()), )); write_set.freeze().expect("mint writeset should be valid") } @@ -311,15 +311,15 @@ fn gen_payment_writeset( let mut write_set = WriteSetMut::default(); write_set.insert(( StateKey::access_path(balance_ap(sender)), - WriteOp::Modification(sender_balance.le_bytes()), + WriteOp::legacy_modification(sender_balance.le_bytes()), )); write_set.insert(( StateKey::access_path(seqnum_ap(sender)), - WriteOp::Modification(sender_seqnum.le_bytes()), + WriteOp::legacy_modification(sender_seqnum.le_bytes()), )); write_set.insert(( StateKey::access_path(balance_ap(recipient)), - WriteOp::Modification(recipient_balance.le_bytes()), + WriteOp::legacy_modification(recipient_balance.le_bytes()), )); write_set .freeze() diff --git a/execution/executor/src/tests/mod.rs b/execution/executor/src/tests/mod.rs index e14588cdf2ac1..8124daf1ae24c 100644 --- a/execution/executor/src/tests/mod.rs +++ b/execution/executor/src/tests/mod.rs @@ -521,14 +521,14 @@ fn test_deleted_key_from_state_store() { let transaction2 = create_test_transaction(1); let write_set1 = WriteSetMut::new(vec![( dummy_state_key1.clone(), - WriteOp::Modification(dummy_value1.clone()), + WriteOp::legacy_modification(dummy_value1.clone()), )]) .freeze() .unwrap(); let write_set2 = WriteSetMut::new(vec![( dummy_state_key2.clone(), - WriteOp::Modification(dummy_value2.clone()), + WriteOp::legacy_modification(dummy_value2.clone()), )]) .freeze() .unwrap(); @@ -557,7 +557,7 @@ fn test_deleted_key_from_state_store() { assert_eq!(state_value2_from_db, StateValue::from(dummy_value2.clone())); let transaction3 = create_test_transaction(2); - let write_set3 = WriteSetMut::new(vec![(dummy_state_key1.clone(), WriteOp::Deletion)]) + let write_set3 = WriteSetMut::new(vec![(dummy_state_key1.clone(), WriteOp::legacy_deletion())]) .freeze() .unwrap(); diff --git a/execution/executor/tests/db_bootstrapper_test.rs b/execution/executor/tests/db_bootstrapper_test.rs index 67971196422d4..2bcdac9cd053c 100644 --- a/execution/executor/tests/db_bootstrapper_test.rs +++ b/execution/executor/tests/db_bootstrapper_test.rs @@ -229,14 +229,16 @@ fn test_new_genesis() { StateKey::access_path( access_path_for_config(ValidatorSet::CONFIG_ID).expect("access path in test"), ), - WriteOp::Modification(bcs::to_bytes(&ValidatorSet::new(vec![])).unwrap().into()), + WriteOp::legacy_modification( + bcs::to_bytes(&ValidatorSet::new(vec![])).unwrap().into(), + ), ), ( StateKey::access_path(AccessPath::new( CORE_CODE_ADDRESS, ConfigurationResource::resource_path(), )), - WriteOp::Modification( + WriteOp::legacy_modification( bcs::to_bytes(&configuration.bump_epoch_for_test()) .unwrap() .into(), @@ -247,7 +249,7 @@ fn test_new_genesis() { account1, CoinStoreResource::resource_path(), )), - WriteOp::Modification( + WriteOp::legacy_modification( bcs::to_bytes(&CoinStoreResource::new( 100_000_000, false, diff --git a/testsuite/generate-format/src/api.rs b/testsuite/generate-format/src/api.rs index 7475e52965202..6c8bcb9b62703 100644 --- a/testsuite/generate-format/src/api.rs +++ b/testsuite/generate-format/src/api.rs @@ -13,7 +13,10 @@ use aptos_types::{ access_path::{AccessPath, Path}, account_config::{CoinStoreResource, DepositEvent, WithdrawEvent}, contract_event, event, - state_store::state_key::StateKey, + state_store::{ + state_key::StateKey, + state_value::{PersistedStateValueMetadata, StateValueMetadata}, + }, transaction, transaction::authenticator::{AccountAuthenticator, TransactionAuthenticator}, vm_status::AbortLocation, @@ -69,6 +72,9 @@ pub fn get_registry() -> Result { // 1. Record samples for types with custom deserializers. trace_crypto_values(&mut tracer, &mut samples)?; tracer.trace_value(&mut samples, &event::EventKey::random())?; + tracer.trace_value(&mut samples, &write_set::WriteOp::Deletion { + metadata: StateValueMetadata::none(), + })?; // 2. Trace the main entry point(s) + every enum separately. // stdlib types @@ -82,6 +88,7 @@ pub fn get_registry() -> Result { tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; + tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; diff --git a/testsuite/generate-format/src/aptos.rs b/testsuite/generate-format/src/aptos.rs index d49c65d002cef..a2a61e25c702d 100644 --- a/testsuite/generate-format/src/aptos.rs +++ b/testsuite/generate-format/src/aptos.rs @@ -11,7 +11,12 @@ use aptos_crypto::{ }; use aptos_crypto_derive::{BCSCryptoHash, CryptoHasher}; use aptos_types::{ - contract_event, event, state_store::state_key::StateKey, transaction, write_set, + contract_event, event, + state_store::{ + state_key::StateKey, + state_value::{PersistedStateValueMetadata, StateValueMetadata}, + }, + transaction, write_set, }; use move_core_types::language_storage; use rand::{rngs::StdRng, SeedableRng}; @@ -63,6 +68,9 @@ pub fn get_registry() -> Result { // 1. Record samples for types with custom deserializers. trace_crypto_values(&mut tracer, &mut samples)?; tracer.trace_value(&mut samples, &event::EventKey::random())?; + tracer.trace_value(&mut samples, &write_set::WriteOp::Deletion { + metadata: StateValueMetadata::none(), + })?; // 2. Trace the main entry point(s) + every enum separately. tracer.trace_type::(&samples)?; @@ -72,6 +80,7 @@ pub fn get_registry() -> Result { tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; + tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; diff --git a/testsuite/generate-format/src/consensus.rs b/testsuite/generate-format/src/consensus.rs index 1cb1650e6aac2..ea2caac7fbf4e 100644 --- a/testsuite/generate-format/src/consensus.rs +++ b/testsuite/generate-format/src/consensus.rs @@ -12,7 +12,12 @@ use aptos_crypto::{ }; use aptos_crypto_derive::{BCSCryptoHash, CryptoHasher}; use aptos_types::{ - contract_event, event, state_store::state_key::StateKey, transaction, write_set, + contract_event, event, + state_store::{ + state_key::StateKey, + state_value::{PersistedStateValueMetadata, StateValueMetadata}, + }, + transaction, write_set, }; use move_core_types::language_storage; use rand::{rngs::StdRng, SeedableRng}; @@ -70,6 +75,9 @@ pub fn get_registry() -> Result { &aptos_consensus_types::block::Block::make_genesis_block(), )?; tracer.trace_value(&mut samples, &event::EventKey::random())?; + tracer.trace_value(&mut samples, &write_set::WriteOp::Deletion { + metadata: StateValueMetadata::none(), + })?; // 2. Trace the main entry point(s) + every enum separately. tracer.trace_type::(&samples)?; @@ -83,6 +91,7 @@ pub fn get_registry() -> Result { tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; + tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; diff --git a/testsuite/generate-format/tests/staged/api.yaml b/testsuite/generate-format/tests/staged/api.yaml index 75fddb2e1b83c..8ac51efa2f9ce 100644 --- a/testsuite/generate-format/tests/staged/api.yaml +++ b/testsuite/generate-format/tests/staged/api.yaml @@ -312,6 +312,12 @@ StateValueMetadata: STRUCT: - deposit: U64 - creation_time_usecs: U64 + 1: + V1: + STRUCT: + - slot_deposit: U64 + - bytes_deposit: U64 + - creation_time_usecs: U64 StructTag: STRUCT: - address: @@ -323,12 +329,6 @@ StructTag: - type_args: SEQ: TYPENAME: TypeTag -ValidatorTransaction: - ENUM: - 0: - DummyTopic: - NEWTYPE: - TYPENAME: DummyValidatorTransaction TableHandle: NEWTYPESTRUCT: TYPENAME: AccountAddress @@ -527,6 +527,12 @@ TypeTag: u32: UNIT 10: u256: UNIT +ValidatorTransaction: + ENUM: + 0: + DummyTopic: + NEWTYPE: + TYPENAME: DummyValidatorTransaction WithdrawEvent: STRUCT: - amount: U64 diff --git a/testsuite/generate-format/tests/staged/aptos.yaml b/testsuite/generate-format/tests/staged/aptos.yaml index 5567aa32b939d..26c60eef74000 100644 --- a/testsuite/generate-format/tests/staged/aptos.yaml +++ b/testsuite/generate-format/tests/staged/aptos.yaml @@ -244,6 +244,12 @@ StateValueMetadata: STRUCT: - deposit: U64 - creation_time_usecs: U64 + 1: + V1: + STRUCT: + - slot_deposit: U64 + - bytes_deposit: U64 + - creation_time_usecs: U64 StructTag: STRUCT: - address: @@ -255,12 +261,6 @@ StructTag: - type_args: SEQ: TYPENAME: TypeTag -ValidatorTransaction: - ENUM: - 0: - DummyTopic: - NEWTYPE: - TYPENAME: DummyValidatorTransaction TableHandle: NEWTYPESTRUCT: TYPENAME: AccountAddress @@ -412,6 +412,12 @@ TypeTag: u32: UNIT 10: u256: UNIT +ValidatorTransaction: + ENUM: + 0: + DummyTopic: + NEWTYPE: + TYPENAME: DummyValidatorTransaction WriteOp: ENUM: 0: diff --git a/testsuite/generate-format/tests/staged/consensus.yaml b/testsuite/generate-format/tests/staged/consensus.yaml index 1a0d7426b0a49..9727696d5a01e 100644 --- a/testsuite/generate-format/tests/staged/consensus.yaml +++ b/testsuite/generate-format/tests/staged/consensus.yaml @@ -604,6 +604,12 @@ StateValueMetadata: STRUCT: - deposit: U64 - creation_time_usecs: U64 + 1: + V1: + STRUCT: + - slot_deposit: U64 + - bytes_deposit: U64 + - creation_time_usecs: U64 StructTag: STRUCT: - address: diff --git a/types/src/account_config/resources/coin_info.rs b/types/src/account_config/resources/coin_info.rs index 3f3a402b44f91..3ee5e1002f34b 100644 --- a/types/src/account_config/resources/coin_info.rs +++ b/types/src/account_config/resources/coin_info.rs @@ -127,11 +127,11 @@ impl CoinInfoResource { let write_set = vec![ ( StateKey::access_path(ap), - WriteOp::Modification(bcs::to_bytes(&self).unwrap().into()), + WriteOp::legacy_modification(bcs::to_bytes(&self).unwrap().into()), ), ( value_state_key, - WriteOp::Modification(bcs::to_bytes(&0_u128).unwrap().into()), + WriteOp::legacy_modification(bcs::to_bytes(&0_u128).unwrap().into()), ), ]; Ok(WriteSetMut::new(write_set).freeze().unwrap()) diff --git a/types/src/proptest_types.rs b/types/src/proptest_types.rs index 89a951abd7f2a..fa47dd1b118c2 100644 --- a/types/src/proptest_types.rs +++ b/types/src/proptest_types.rs @@ -59,11 +59,11 @@ use std::{ impl WriteOp { pub fn value_strategy() -> impl Strategy { - vec(any::(), 0..64).prop_map(|bytes| WriteOp::Modification(bytes.into())) + vec(any::(), 0..64).prop_map(|bytes| WriteOp::legacy_modification(bytes.into())) } pub fn deletion_strategy() -> impl Strategy { - Just(WriteOp::Deletion) + Just(WriteOp::legacy_deletion()) } } @@ -812,7 +812,7 @@ impl TransactionToCommitGen { state_key.clone(), Some(StateValue::new_legacy(Bytes::copy_from_slice(&value))), ), - (state_key, WriteOp::Modification(value.into())), + (state_key, WriteOp::legacy_modification(value.into())), ) }) }) diff --git a/types/src/state_store/state_value.rs b/types/src/state_store/state_value.rs index 629c46315327e..a8f31ab42198f 100644 --- a/types/src/state_store/state_value.rs +++ b/types/src/state_store/state_value.rs @@ -15,48 +15,150 @@ use once_cell::sync::OnceCell; #[cfg(any(test, feature = "fuzzing"))] use proptest::{arbitrary::Arbitrary, prelude::*}; use serde::{Deserialize, Deserializer, Serialize, Serializer}; -#[derive( - BCSCryptoHash, - Clone, - CryptoHasher, - Debug, - Deserialize, - Eq, - PartialEq, - Serialize, - Ord, - PartialOrd, - Hash, -)] -pub enum StateValueMetadata { + +#[derive(Deserialize, Serialize)] +#[serde(rename = "StateValueMetadata")] +pub enum PersistedStateValueMetadata { V0 { deposit: u64, creation_time_usecs: u64, }, + V1 { + slot_deposit: u64, + bytes_deposit: u64, + creation_time_usecs: u64, + }, } -// To avoid nested options when fetching a resource and its metadata. -pub type StateValueMetadataKind = Option; +impl PersistedStateValueMetadata { + pub fn into_in_mem_form(self) -> StateValueMetadata { + match self { + PersistedStateValueMetadata::V0 { + deposit, + creation_time_usecs, + } => StateValueMetadata::new_impl(deposit, 0, creation_time_usecs), + PersistedStateValueMetadata::V1 { + slot_deposit, + bytes_deposit, + creation_time_usecs, + } => StateValueMetadata::new_impl(slot_deposit, bytes_deposit, creation_time_usecs), + } + } +} + +#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +struct StateValueMetadataInner { + slot_deposit: u64, + bytes_deposit: u64, + creation_time_usecs: u64, +} + +#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +pub struct StateValueMetadata { + inner: Option, +} impl StateValueMetadata { - pub fn new(deposit: u64, creation_time_usecs: &CurrentTimeMicroseconds) -> Self { - Self::V0 { - deposit, - creation_time_usecs: creation_time_usecs.microseconds, - } + pub fn into_persistable(self) -> Option { + self.inner.map(|inner| { + let StateValueMetadataInner { + slot_deposit, + bytes_deposit, + creation_time_usecs, + } = inner; + if bytes_deposit == 0 { + PersistedStateValueMetadata::V0 { + deposit: slot_deposit, + creation_time_usecs, + } + } else { + PersistedStateValueMetadata::V1 { + slot_deposit, + bytes_deposit, + creation_time_usecs, + } + } + }) } - pub fn deposit(&self) -> u64 { - match self { - StateValueMetadata::V0 { deposit, .. } => *deposit, - } + pub fn new( + slot_deposit: u64, + bytes_deposit: u64, + creation_time_usecs: &CurrentTimeMicroseconds, + ) -> Self { + Self::new_impl( + slot_deposit, + bytes_deposit, + creation_time_usecs.microseconds, + ) } - pub fn set_deposit(&mut self, amount: u64) { - match self { - StateValueMetadata::V0 { deposit, .. } => *deposit = amount, + pub fn legacy(slot_deposit: u64, creation_time_usecs: &CurrentTimeMicroseconds) -> Self { + Self::new(slot_deposit, 0, creation_time_usecs) + } + + pub fn placeholder(creation_time_usecs: &CurrentTimeMicroseconds) -> Self { + Self::legacy(0, creation_time_usecs) + } + + pub fn none() -> Self { + Self { inner: None } + } + + fn new_impl(slot_deposit: u64, bytes_deposit: u64, creation_time_usecs: u64) -> Self { + Self { + inner: Some(StateValueMetadataInner { + slot_deposit, + bytes_deposit, + creation_time_usecs, + }), } } + + pub fn is_none(&self) -> bool { + self.inner.is_none() + } + + fn inner(&self) -> Option<&StateValueMetadataInner> { + self.inner.as_ref() + } + + pub fn creation_time_usecs(&self) -> u64 { + self.inner().map_or(0, |v1| v1.creation_time_usecs) + } + + pub fn slot_deposit(&self) -> u64 { + self.inner().map_or(0, |v1| v1.slot_deposit) + } + + pub fn bytes_deposit(&self) -> u64 { + self.inner().map_or(0, |v1| v1.bytes_deposit) + } + + pub fn total_deposit(&self) -> u64 { + self.slot_deposit() + self.bytes_deposit() + } + + pub fn maybe_upgrade(&mut self) -> &mut Self { + *self = Self::new_impl( + self.slot_deposit(), + self.bytes_deposit(), + self.creation_time_usecs(), + ); + self + } + + fn expect_upgraded(&mut self) -> &mut StateValueMetadataInner { + self.inner.as_mut().expect("State metadata is None.") + } + + pub fn set_slot_deposit(&mut self, amount: u64) { + self.expect_upgraded().slot_deposit = amount; + } + + pub fn set_bytes_deposit(&mut self, amount: u64) { + self.expect_upgraded().bytes_deposit = amount; + } } #[derive(Clone, Debug, CryptoHasher)] @@ -73,28 +175,48 @@ impl PartialEq for StateValue { impl Eq for StateValue {} -#[derive( - BCSCryptoHash, - Clone, - CryptoHasher, - Debug, - Deserialize, - Eq, - PartialEq, - Serialize, - Ord, - PartialOrd, - Hash, -)] +#[derive(BCSCryptoHash, CryptoHasher, Deserialize, Serialize)] #[serde(rename = "StateValue")] -pub enum StateValueInner { +enum PersistedStateValue { V0(Bytes), WithMetadata { data: Bytes, - metadata: StateValueMetadata, + metadata: PersistedStateValueMetadata, }, } +impl PersistedStateValue { + fn into_in_mem_form(self) -> StateValueInner { + match self { + PersistedStateValue::V0(data) => StateValueInner { + data, + metadata: StateValueMetadata::none(), + }, + PersistedStateValue::WithMetadata { data, metadata } => StateValueInner { + data, + metadata: metadata.into_in_mem_form(), + }, + } + } +} + +#[derive(Clone, Debug, Eq, PartialEq)] +struct StateValueInner { + data: Bytes, + metadata: StateValueMetadata, +} + +impl StateValueInner { + fn to_persistable_form(&self) -> PersistedStateValue { + let Self { data, metadata } = self.clone(); + let metadata = metadata.into_persistable(); + match metadata { + None => PersistedStateValue::V0(data), + Some(metadata) => PersistedStateValue::WithMetadata { data, metadata }, + } + } +} + #[cfg(any(test, feature = "fuzzing"))] impl Arbitrary for StateValue { type Parameters = (); @@ -112,7 +234,7 @@ impl<'de> Deserialize<'de> for StateValue { where D: Deserializer<'de>, { - let inner = StateValueInner::deserialize(deserializer)?; + let inner = PersistedStateValue::deserialize(deserializer)?.into_in_mem_form(); let hash = OnceCell::new(); Ok(Self { inner, hash }) } @@ -123,20 +245,17 @@ impl Serialize for StateValue { where S: Serializer, { - self.inner.serialize(serializer) + self.inner.to_persistable_form().serialize(serializer) } } impl StateValue { pub fn new_legacy(bytes: Bytes) -> Self { - Self::new_impl(StateValueInner::V0(bytes)) + Self::new_with_metadata(bytes, StateValueMetadata::none()) } pub fn new_with_metadata(data: Bytes, metadata: StateValueMetadata) -> Self { - Self::new_impl(StateValueInner::WithMetadata { data, metadata }) - } - - fn new_impl(inner: StateValueInner) -> Self { + let inner = StateValueInner { data, metadata }; let hash = OnceCell::new(); Self { inner, hash } } @@ -146,9 +265,7 @@ impl StateValue { } pub fn bytes(&self) -> &Bytes { - match &self.inner { - StateValueInner::V0(data) | StateValueInner::WithMetadata { data, .. } => data, - } + &self.inner.data } /// Applies a bytes-to-bytes transformation on the state value contents, @@ -157,27 +274,19 @@ impl StateValue { self, f: F, ) -> anyhow::Result { - Ok(StateValue::new_impl(match self.inner { - StateValueInner::V0(data) => StateValueInner::V0(f(data)?), - StateValueInner::WithMetadata { data, metadata } => StateValueInner::WithMetadata { - data: f(data)?, - metadata, - }, - })) + Ok(Self::new_with_metadata( + f(self.inner.data)?, + self.inner.metadata, + )) } - pub fn into_metadata(self) -> Option { - match self.inner { - StateValueInner::V0(_) => None, - StateValueInner::WithMetadata { metadata, .. } => Some(metadata), - } + pub fn into_metadata(self) -> StateValueMetadata { + self.inner.metadata } - pub fn into(self) -> (Option, Bytes) { - match self.inner { - StateValueInner::V0(bytes) => (None, bytes), - StateValueInner::WithMetadata { data, metadata } => (Some(metadata), data), - } + pub fn unpack(self) -> (StateValueMetadata, Bytes) { + let StateValueInner { data, metadata } = self.inner; + (metadata, data) } } @@ -199,7 +308,9 @@ impl CryptoHash for StateValue { type Hasher = StateValueHasher; fn hash(&self) -> HashValue { - *self.hash.get_or_init(|| CryptoHash::hash(&self.inner)) + *self + .hash + .get_or_init(|| CryptoHash::hash(&self.inner.to_persistable_form())) } } diff --git a/types/src/transaction/change_set.rs b/types/src/transaction/change_set.rs index 28780454d5780..1b269cedde151 100644 --- a/types/src/transaction/change_set.rs +++ b/types/src/transaction/change_set.rs @@ -5,7 +5,7 @@ use crate::{contract_event::ContractEvent, write_set::WriteSet}; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Hash, Eq, PartialEq, Serialize, Deserialize)] +#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)] pub struct ChangeSet { write_set: WriteSet, events: Vec, diff --git a/types/src/write_set.rs b/types/src/write_set.rs index 48db97d689a98..de05cc84b4fe9 100644 --- a/types/src/write_set.rs +++ b/types/src/write_set.rs @@ -5,15 +5,18 @@ //! For each transaction the VM executes, the VM will output a `WriteSet` that contains each access //! path it updates. For each access path, the VM can either give its new value or delete it. -use crate::state_store::{ - state_key::StateKey, - state_value::{StateValue, StateValueMetadata, StateValueMetadataKind}, +use crate::{ + state_store::{ + state_key::StateKey, + state_value::{PersistedStateValueMetadata, StateValue, StateValueMetadata}, + }, + write_set::WriteOp::{Creation, Deletion, Modification}, }; -use anyhow::{bail, Result}; +use anyhow::{bail, ensure, Result}; use aptos_crypto_derive::{BCSCryptoHash, CryptoHasher}; use bytes::Bytes; use once_cell::sync::Lazy; -use serde::{Deserialize, Serialize}; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; use std::{ collections::{btree_map, BTreeMap}, fmt::Debug, @@ -41,25 +44,96 @@ pub enum WriteOpKind { Deletion, } -#[derive(Clone, Eq, Hash, PartialEq, Serialize, Deserialize)] -pub enum WriteOp { +#[derive(Serialize, Deserialize)] +#[serde(rename = "WriteOp")] +enum PersistedWriteOp { Creation(Bytes), Modification(Bytes), Deletion, CreationWithMetadata { data: Bytes, - metadata: StateValueMetadata, + metadata: PersistedStateValueMetadata, }, ModificationWithMetadata { data: Bytes, - metadata: StateValueMetadata, + metadata: PersistedStateValueMetadata, }, DeletionWithMetadata { + metadata: PersistedStateValueMetadata, + }, +} + +impl PersistedWriteOp { + fn into_in_mem_form(self) -> WriteOp { + use PersistedWriteOp::*; + + match self { + Creation(data) => WriteOp::Creation { + data, + metadata: StateValueMetadata::none(), + }, + Modification(data) => WriteOp::Modification { + data, + metadata: StateValueMetadata::none(), + }, + Deletion => WriteOp::Deletion { + metadata: StateValueMetadata::none(), + }, + CreationWithMetadata { data, metadata } => WriteOp::Creation { + data, + metadata: metadata.into_in_mem_form(), + }, + ModificationWithMetadata { data, metadata } => WriteOp::Modification { + data, + metadata: metadata.into_in_mem_form(), + }, + DeletionWithMetadata { metadata } => WriteOp::Deletion { + metadata: metadata.into_in_mem_form(), + }, + } + } +} + +#[derive(Clone, Eq, Hash, PartialEq)] +pub enum WriteOp { + Creation { + data: Bytes, + metadata: StateValueMetadata, + }, + Modification { + data: Bytes, + metadata: StateValueMetadata, + }, + Deletion { metadata: StateValueMetadata, }, } impl WriteOp { + fn to_persistable(&self) -> PersistedWriteOp { + use PersistedWriteOp::*; + + let metadata = self.metadata().clone().into_persistable(); + match metadata { + None => match self { + WriteOp::Creation { data, .. } => Creation(data.clone()), + WriteOp::Modification { data, .. } => Modification(data.clone()), + WriteOp::Deletion { .. } => Deletion, + }, + Some(metadata) => match self { + WriteOp::Creation { data, .. } => CreationWithMetadata { + data: data.clone(), + metadata, + }, + WriteOp::Modification { data, .. } => ModificationWithMetadata { + data: data.clone(), + metadata, + }, + WriteOp::Deletion { .. } => DeletionWithMetadata { metadata }, + }, + } + } + /// Merges two write ops on the same state item. /// /// returns `false` if the result indicates no op has happened -- that's when the first op @@ -67,94 +141,145 @@ impl WriteOp { pub fn squash(op: &mut Self, other: Self) -> Result { use WriteOp::*; - // n.b. With write sets from multiple sessions being squashed together, it's possible - // to see two ops carrying different metadata (or one with it the other without) - // due to deleting in one session and recreating in another. The original metadata - // shouldn't change due to the squash. - // And because the deposit or refund happens after all squashing is finished, it's - // not a concern of fairness. - match (&op, other) { - ( - Modification(_) - | ModificationWithMetadata { .. } - | Creation(_) - | CreationWithMetadata { .. }, - Creation(_) | CreationWithMetadata {..}, - ) // create existing - | ( - Deletion | DeletionWithMetadata {..}, - Deletion | DeletionWithMetadata {..} | Modification(_) | ModificationWithMetadata { .. }, - ) // delete or modify already deleted + (Modification { .. } | Creation { .. }, Creation { .. }) // create existing + | (Deletion { .. }, Modification { .. } | Deletion { .. }) // delete or modify already deleted => { - bail!( - "The given change sets cannot be squashed", - ) - }, - (Modification(_), Modification(data) | ModificationWithMetadata {data, ..}) => *op = Modification(data), - (ModificationWithMetadata{metadata, ..}, Modification(data) | ModificationWithMetadata{data, ..}) => { - *op = ModificationWithMetadata{data, metadata: metadata.clone()} - }, - (Creation(_), Modification(data) | ModificationWithMetadata {data, ..} ) => { - *op = Creation(data) + bail!("The given change sets cannot be squashed") }, - (CreationWithMetadata{metadata , ..}, Modification(data) | ModificationWithMetadata{data, ..}) => { - *op = CreationWithMetadata{data, metadata: metadata.clone()} - }, - (Modification(_) , Deletion | DeletionWithMetadata {..}) => { - *op = Deletion + (Creation {metadata: old_meta, .. } , Modification {data, metadata}) => { + Self::ensure_metadata_compatible(old_meta, &metadata)?; + + *op = Creation { + data, + metadata, + }; }, - (ModificationWithMetadata{metadata, ..} , Deletion | DeletionWithMetadata {..}) => { - *op = DeletionWithMetadata {metadata: metadata.clone()} + (Modification{metadata: old_meta, .. } , Modification {data, metadata}) => { + Self::ensure_metadata_compatible(old_meta, &metadata)?; + + *op = Modification { + data, + metadata, + }; }, - (Deletion, Creation(data) | CreationWithMetadata {data, ..}) => { - *op = Modification(data) + (Modification {metadata: old_meta, ..}, Deletion {metadata}) => { + Self::ensure_metadata_compatible(old_meta, &metadata)?; + + *op = Deletion { + metadata, + } }, - (DeletionWithMetadata {metadata, ..}, Creation(data) | CreationWithMetadata {data, ..}) => { - *op = ModificationWithMetadata{data, metadata: metadata.clone()} + (Deletion {metadata}, Creation {data, ..}) => { + // n.b. With write sets from multiple sessions being squashed together, it's possible + // to see two ops carrying different metadata (or one with it the other without) + // due to deleting in one session and recreating in another. The original metadata + // shouldn't change due to the squash. + // And because the deposit or refund happens after all squashing is finished, it's + // not a concern of fairness. + *op = Modification { + data, + metadata: metadata.clone(), + } }, - (Creation(_) | CreationWithMetadata {..}, Deletion | DeletionWithMetadata {..}) => { + (Creation { metadata: old_meta, .. }, Deletion { metadata }) => { + Self::ensure_metadata_compatible(old_meta, &metadata)?; + return Ok(false) }, } Ok(true) } + fn ensure_metadata_compatible( + old: &StateValueMetadata, + new: &StateValueMetadata, + ) -> Result<()> { + // Write ops shouldn't be squashed after the second one is charged for fees, which might + // result in metadata change (bytes_deposit increase, for example). + ensure!( + old == new, + "Squashing incompatible metadata: old:{old:?}, new:{new:?}", + ); + Ok(()) + } + pub fn bytes(&self) -> Option<&Bytes> { use WriteOp::*; match self { - Creation(data) - | CreationWithMetadata { data, .. } - | Modification(data) - | ModificationWithMetadata { data, .. } => Some(data), - Deletion | DeletionWithMetadata { .. } => None, + Creation { data, .. } | Modification { data, .. } => Some(data), + Deletion { .. } => None, } } - pub fn metadata(&self) -> Option<&StateValueMetadata> { + pub fn metadata(&self) -> &StateValueMetadata { use WriteOp::*; match self { - Creation(_) | Modification(_) | Deletion => None, - CreationWithMetadata { metadata, .. } - | ModificationWithMetadata { metadata, .. } - | DeletionWithMetadata { metadata, .. } => Some(metadata), + Creation { metadata, .. } | Modification { metadata, .. } | Deletion { metadata } => { + metadata + }, } } - pub fn get_metadata_mut(&mut self) -> Option<&mut StateValueMetadata> { + pub fn get_metadata_mut(&mut self) -> &mut StateValueMetadata { use WriteOp::*; match self { - Creation(_) | Modification(_) | Deletion => None, - CreationWithMetadata { metadata, .. } - | ModificationWithMetadata { metadata, .. } - | DeletionWithMetadata { metadata, .. } => Some(metadata), + Creation { metadata, .. } | Modification { metadata, .. } | Deletion { metadata } => { + metadata + }, + } + } + + pub fn into_metadata(self) -> StateValueMetadata { + match self { + Creation { metadata, .. } | Modification { metadata, .. } | Deletion { metadata } => { + metadata + }, + } + } + + pub fn legacy_creation(data: Bytes) -> Self { + Self::Creation { + data, + metadata: StateValueMetadata::none(), + } + } + + pub fn legacy_modification(data: Bytes) -> Self { + Self::Modification { + data, + metadata: StateValueMetadata::none(), + } + } + + pub fn legacy_deletion() -> Self { + Self::Deletion { + metadata: StateValueMetadata::none(), } } } +impl<'de> Deserialize<'de> for WriteOp { + fn deserialize(deserializer: D) -> std::result::Result + where + D: Deserializer<'de>, + { + PersistedWriteOp::deserialize(deserializer).map(|persisted| persisted.into_in_mem_form()) + } +} + +impl Serialize for WriteOp { + fn serialize(&self, serializer: S) -> std::result::Result + where + S: Serializer, + { + self.to_persistable().serialize(serializer) + } +} + pub enum WriteOpSize { Creation { write_len: u64 }, Modification { write_len: u64 }, @@ -165,15 +290,13 @@ impl From<&WriteOp> for WriteOpSize { fn from(value: &WriteOp) -> Self { use WriteOp::*; match value { - Creation(data) | CreationWithMetadata { data, .. } => WriteOpSize::Creation { + Creation { data, .. } => WriteOpSize::Creation { write_len: data.len() as u64, }, - Modification(data) | ModificationWithMetadata { data, .. } => { - WriteOpSize::Modification { - write_len: data.len() as u64, - } + Modification { data, .. } => WriteOpSize::Modification { + write_len: data.len() as u64, }, - Deletion | DeletionWithMetadata { .. } => WriteOpSize::Deletion, + Deletion { .. } => WriteOpSize::Deletion, } } } @@ -198,7 +321,7 @@ pub trait TransactionWrite: Debug { // Returns metadata that would be observed by a read following the 'self' write. // Provided as a separate method to avoid the clone in as_state_value method // (although default implementation below does just that). - fn as_state_value_metadata(&self) -> Option { + fn as_state_value_metadata(&self) -> Option { self.as_state_value() .map(|state_value| state_value.into_metadata()) } @@ -252,36 +375,32 @@ impl TransactionWrite for WriteOp { } fn as_state_value(&self) -> Option { - self.bytes().map(|bytes| match self.metadata() { - None => StateValue::new_legacy(bytes.clone()), - Some(metadata) => StateValue::new_with_metadata(bytes.clone(), metadata.clone()), - }) + self.bytes() + .map(|bytes| StateValue::new_with_metadata(bytes.clone(), self.metadata().clone())) } // Note that even if WriteOp is DeletionWithMetadata, the method returns None, as a later // read would not read the metadata of the deletion op. - fn as_state_value_metadata(&self) -> Option { - self.bytes().map(|_| self.metadata().cloned()) + fn as_state_value_metadata(&self) -> Option { + self.bytes().map(|_| self.metadata().clone()) } fn from_state_value(maybe_state_value: Option) -> Self { - match maybe_state_value.map(|state_value| state_value.into()) { - None => WriteOp::Deletion, - Some((None, bytes)) => WriteOp::Creation(bytes), - Some((Some(metadata), bytes)) => WriteOp::CreationWithMetadata { - data: bytes, - metadata, + match maybe_state_value { + None => Self::legacy_deletion(), + Some(state_value) => { + let (metadata, data) = state_value.unpack(); + Self::Creation { data, metadata } }, } } fn write_op_kind(&self) -> WriteOpKind { + use WriteOpKind::*; match self { - WriteOp::Creation(_) | WriteOp::CreationWithMetadata { .. } => WriteOpKind::Creation, - WriteOp::Modification(_) | WriteOp::ModificationWithMetadata { .. } => { - WriteOpKind::Modification - }, - WriteOp::Deletion | WriteOp::DeletionWithMetadata { .. } => WriteOpKind::Deletion, + WriteOp::Creation { .. } => Creation, + WriteOp::Modification { .. } => Modification, + WriteOp::Deletion { .. } => Deletion, } } @@ -289,24 +408,20 @@ impl TransactionWrite for WriteOp { use WriteOp::*; match self { - Creation(data) | CreationWithMetadata { data, .. } => *data = bytes, - Modification(data) | ModificationWithMetadata { data, .. } => *data = bytes, - Deletion | DeletionWithMetadata { .. } => (), + Creation { data, .. } | Modification { data, .. } => *data = bytes, + Deletion { .. } => (), } } fn convert_read_to_modification(&self) -> Option { use WriteOp::*; - match self { - Creation(data) | Modification(data) => Some(Modification(data.clone())), - CreationWithMetadata { data, metadata } - | ModificationWithMetadata { data, metadata } => Some(ModificationWithMetadata { - data: data.clone(), - metadata: metadata.clone(), - }), + match self.clone() { + Creation { data, metadata } | Modification { data, metadata } => { + Some(Modification { data, metadata }) + }, // Deletion don't have data to become modification. - Deletion | DeletionWithMetadata { .. } => None, + Deletion { .. } => None, } } } @@ -314,41 +429,24 @@ impl TransactionWrite for WriteOp { impl std::fmt::Debug for WriteOp { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - WriteOp::Modification(value) => write!( - f, - "Modification({})", - value - .iter() - .map(|byte| format!("{:02x}", byte)) - .collect::() - ), - WriteOp::Creation(value) => write!( - f, - "Creation({})", - value - .iter() - .map(|byte| format!("{:02x}", byte)) - .collect::() - ), - WriteOp::Deletion => write!(f, "Deletion"), - WriteOp::CreationWithMetadata { data, metadata } => write!( + Creation { data, metadata } => write!( f, - "CreationWithMetadata({}, metadata:{:?})", + "Creation({}, metadata:{:?})", data.iter() .map(|byte| format!("{:02x}", byte)) .collect::(), metadata, ), - WriteOp::ModificationWithMetadata { data, metadata } => write!( + Modification { data, metadata } => write!( f, - "ModificationWithMetadata({}, metadata:{:?})", + "Modification({}, metadata:{:?})", data.iter() .map(|byte| format!("{:02x}", byte)) .collect::(), metadata, ), - WriteOp::DeletionWithMetadata { metadata } => { - write!(f, "DeletionWithMetadata(metadata:{:?})", metadata,) + Deletion { metadata } => { + write!(f, "Deletion(metadata:{:?})", metadata,) }, } } @@ -435,7 +533,7 @@ impl WriteSetV0 { .write_set .insert( TOTAL_SUPPLY_STATE_KEY.clone(), - WriteOp::Modification(bcs::to_bytes(&value).unwrap().into()) + WriteOp::legacy_modification(bcs::to_bytes(&value).unwrap().into()) ) .is_some()); } @@ -507,7 +605,7 @@ impl WriteSetMut { } } -impl ::std::iter::FromIterator<(StateKey, WriteOp)> for WriteSetMut { +impl FromIterator<(StateKey, WriteOp)> for WriteSetMut { fn from_iter>(iter: I) -> Self { let mut ws = WriteSetMut::default(); for write in iter { @@ -528,7 +626,7 @@ impl<'a> IntoIterator for &'a WriteSet { } } -impl ::std::iter::IntoIterator for WriteSet { +impl IntoIterator for WriteSet { type IntoIter = btree_map::IntoIter; type Item = (StateKey, WriteOp);