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 21b46476666..cb4e3c6c33a 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 @@ -7,7 +7,7 @@ Ok( WriteSetMut { write_set: { StateKey::AccessPath { address: 0xa550c18, path: "Resource(0x1::account::Account)" }: Modification(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a000100000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a550c1800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000a550c180000, metadata:StateValueMetadata { inner: None }), - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a02d000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e6365001002d0000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Creation(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590100000000000400f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000004003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a010000000000000000, metadata:StateValueMetadata { inner: Some(StateValueMetadataInner { slot_deposit: 40000, bytes_deposit: 13240, creation_time_usecs: 0 }) }), StateKey::AccessPath { address: 0xb26af11b4f332a7794398554b6313a38c6a102c74c5ba9a12629ae3a492acb2f, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590100000000000400000000000000000000000000000000000000000000000000000000000a550c180000000000000000000000000000000400b26af11b4f332a7794398554b6313a38c6a102c74c5ba9a12629ae3a492acb2f00000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000afc2fffffffffffff00, 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__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 eb0d3431cca..f38fa51d81b 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 a5275c368af..fbfef785eeb 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 484cc4a6c70..f64dd595b27 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 0a4bd621e1d..372d34eccf9 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 484cc4a6c70..f64dd595b27 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 484cc4a6c70..f64dd595b27 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 f7da5d0f6b8..73b09f2526a 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 587ac42b71f..3ba79fac56b 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 587ac42b71f..3ba79fac56b 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 587ac42b71f..3ba79fac56b 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, 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 587ac42b71f..3ba79fac56b 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 @@ -6,7 +6,7 @@ Ok( WriteSetV0( WriteSetMut { write_set: { - StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(020000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a030000000000000000, metadata:StateValueMetadata { inner: None }), + StateKey::AccessPath { address: 0x975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee94809, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(030000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f7265005901000000000004009bb809cb154a393546da38ff08bc927679e77ecdb59dab49029315b54644e40e00000000000000000000000000000004000975b461453e8c36ba66937eaf7f874f7d6a9b26d65e89389304bd1bfee9480900000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f617373657419436f6e63757272656e7446756e6769626c6542616c616e636500100300000000000000ffffffffffffffff, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0x3f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b861891067, path: "ResourceGroup(0x1::object::ObjectGroup)" }: Modification(03000000000000000000000000000000000000000000000000000000000000000104636f696e0d4d6967726174696f6e466c61670001000000000000000000000000000000000000000000000000000000000000000001066f626a6563740a4f626a656374436f726500590000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000000000000000000003f4fc7462763e539d6c50356f9c1d14ffc32b567d038da6bdfa454b86189106700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f61737365740d46756e6769626c6553746f72650029000000000000000000000000000000000000000000000000000000000000000a3d420f000000000000, metadata:StateValueMetadata { inner: None }), StateKey::AccessPath { address: 0xf5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1, path: "Resource(0x1::account::Account)" }: Modification(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10b00000000000000000000000000000000000000000000000000000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe100000000000000000100000000000000f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe10000, metadata:StateValueMetadata { inner: None }), }, diff --git a/aptos-move/framework/aptos-framework/doc/governed_gas_pool.md b/aptos-move/framework/aptos-framework/doc/governed_gas_pool.md index 8514231f1c8..09856c81797 100644 --- a/aptos-move/framework/aptos-framework/doc/governed_gas_pool.md +++ b/aptos-move/framework/aptos-framework/doc/governed_gas_pool.md @@ -12,7 +12,9 @@ - [Function `primary_fungible_store_address`](#0x1_governed_gas_pool_primary_fungible_store_address) - [Function `create_resource_account_seed`](#0x1_governed_gas_pool_create_resource_account_seed) - [Function `initialize`](#0x1_governed_gas_pool_initialize) +- [Function `on_reconfig`](#0x1_governed_gas_pool_on_reconfig) - [Function `initialize_governed_gas_pool_extension`](#0x1_governed_gas_pool_initialize_governed_gas_pool_extension) +- [Function `upgrade_pool_store_to_concurrent`](#0x1_governed_gas_pool_upgrade_pool_store_to_concurrent) - [Function `init_module`](#0x1_governed_gas_pool_init_module) - [Function `governed_gas_signer`](#0x1_governed_gas_pool_governed_gas_signer) - [Function `governed_gas_pool_address`](#0x1_governed_gas_pool_governed_gas_pool_address) @@ -29,9 +31,12 @@ - [Function `register_coin`](#0x1_governed_gas_pool_register_coin) - [Specification](#@Specification_1) - [Function `initialize`](#@Specification_1_initialize) + - [Function `init_module`](#@Specification_1_init_module) - [Function `fund`](#@Specification_1_fund) - [Function `deposit`](#@Specification_1_deposit) - - [Function `deposit_gas_fee`](#@Specification_1_deposit_gas_fee) + - [Function `deposit_from`](#@Specification_1_deposit_from) + - [Function `deposit_gas_fee_v2`](#@Specification_1_deposit_gas_fee_v2) + - [Function `deposit_treasury`](#@Specification_1_deposit_treasury)
use 0x1::account;
@@ -146,6 +151,16 @@ Contains added variable needed for the GovernedGasPool staking reward update.
 ## Constants
 
 
+
+
+Insufficient balance in the pool.
+
+
+
const EINSUFFICIENT_BALANCE: u64 = 1;
+
+ + + No longer supported. @@ -243,7 +258,7 @@ Initializes the governed gas pool around a resource account creation seed.
public fun initialize(
     aptos_framework: &signer,
     delegation_pool_creation_seed: vector<u8>,
-) {
+) acquires GovernedGasPool {
     system_addresses::assert_aptos_framework(aptos_framework);
 
     // return if the governed gas pool has already been initialized
@@ -253,9 +268,10 @@ Initializes the governed gas pool around a resource account creation seed.
                 deposited_treasury_counter: 0,
                 withdraw_staking_reward_events: account::new_event_handle<WithdrawStakingRewardEvent>(aptos_framework),
             });
-        }
-    } else {
+        };
 
+        upgrade_pool_store_to_concurrent(&governed_gas_signer());
+    } else {
         // generate a seed to be used to create the resource account hosting the delegation pool
         let seed = create_resource_account_seed(delegation_pool_creation_seed);
 
@@ -271,6 +287,35 @@ Initializes the governed gas pool around a resource account creation seed.
             deposited_treasury_counter: 0,
             withdraw_staking_reward_events: account::new_event_handle<WithdrawStakingRewardEvent>(aptos_framework),
         });
+
+        upgrade_pool_store_to_concurrent(&governed_gas_pool_signer);
+    }
+}
+
+ + + + + + + +## Function `on_reconfig` + +If the CONCURRENT_FUNGIBLE_BALANCE feature is enabled, upgrade the governed gas pool to a concurrent store + + +
public(friend) fun on_reconfig()
+
+ + + +
+Implementation + + +
public(friend) fun on_reconfig() acquires GovernedGasPool {
+    if (exists<GovernedGasPool>(@aptos_framework)) {
+        upgrade_pool_store_to_concurrent(&governed_gas_signer());
     }
 }
 
@@ -298,18 +343,46 @@ Initializes the governed gas pool extension alone.
public entry fun initialize_governed_gas_pool_extension(
     aptos_framework: &signer,
-) {
+)  {
     system_addresses::assert_aptos_framework(aptos_framework);
 
     // return if the governed gas extension has already been initialized
-    if (exists<GovernedGasPoolExtension>(signer::address_of(aptos_framework))) {
-    } else {
+    if (!exists<GovernedGasPoolExtension>(signer::address_of(aptos_framework))) {
+        move_to(aptos_framework, GovernedGasPoolExtension{
+            deposited_treasury_counter: 0,
+            withdraw_staking_reward_events: account::new_event_handle<WithdrawStakingRewardEvent>(aptos_framework),
+        });
+    };
+}
+
- move_to(aptos_framework, GovernedGasPoolExtension{ - deposited_treasury_counter: 0, - withdraw_staking_reward_events: account::new_event_handle<WithdrawStakingRewardEvent>(aptos_framework), - }); - } + + +
+ + + +## Function `upgrade_pool_store_to_concurrent` + +Ensure the pool is using aggregator_v2 for concurrentcy. +@param pool_signer The signer of the gas pool. + + +
fun upgrade_pool_store_to_concurrent(pool_signer: &signer)
+
+ + + +
+Implementation + + +
fun upgrade_pool_store_to_concurrent(pool_signer: &signer) {
+    if (features::concurrent_fungible_balance_enabled()) {
+        let store_addr = primary_fungible_store_address(signer::address_of(pool_signer));
+        let store = object::address_to_object<fungible_asset::FungibleStore>(store_addr);
+        fungible_asset::upgrade_store_to_concurrent(pool_signer, store);
+    };
 }
 
@@ -334,7 +407,7 @@ Initialize the governed gas pool as a module Implementation -
fun init_module(aptos_framework: &signer) {
+
fun init_module(aptos_framework: &signer) acquires GovernedGasPool {
     // Initialize the governed gas pool
     let seed : vector<u8> = b"aptos_framework::governed_gas_pool";
     initialize(aptos_framework, seed);
@@ -600,6 +673,8 @@ Deposits gas fees into the governed gas pool.
 
 
 
public(friend) fun deposit_gas_fee_v2(gas_payer: address, gas_fee: u64) acquires GovernedGasPool {
+    if (gas_fee == 0) return;
+
     if (features::operations_default_to_fa_apt_store_enabled()) {
         deposit_from_fungible_store(gas_payer, gas_fee);
     } else {
@@ -698,18 +773,19 @@ governed gas pool to authorize the withdrawal.
     amount: u64
 ): Coin<CoinType> acquires GovernedGasPool, GovernedGasPoolExtension {
     let balance = get_balance<CoinType>();
-    assert!(balance >= amount, 0); // insufficient balance
-    let ggpv2 = borrow_global_mut<GovernedGasPoolExtension>(@aptos_framework);
+    assert!(balance >= amount, EINSUFFICIENT_BALANCE);
+
+    let reward = coin::withdraw<CoinType>(&governed_gas_signer(), amount);
 
+    // Use aggregators only if feature is enabled AND counters are initialized.
+    // This avoids aborts between feature rollout and extension initialization.
+    let ggpv2 = borrow_global_mut<GovernedGasPoolExtension>(@aptos_framework);
     event::emit_event(
         &mut ggpv2.withdraw_staking_reward_events,
-        WithdrawStakingRewardEvent {
-            amount,
-        },
+        WithdrawStakingRewardEvent { amount },
     );
 
-    // Withdraw reward coin.
-    coin::withdraw<CoinType>(&governed_gas_signer(), amount)
+    reward
 }
 
@@ -766,13 +842,30 @@ Register Aptos coin with Governed gas signer. -
requires system_addresses::is_aptos_framework_address(signer::address_of(aptos_framework));
+
pragma aborts_if_is_partial = true;
+requires system_addresses::is_aptos_framework_address(signer::address_of(aptos_framework));
 // This enforces high-level requirement 1:
 ensures exists<GovernedGasPool>(@aptos_framework);
 
+ + +### Function `init_module` + + +
fun init_module(aptos_framework: &signer)
+
+ + + + +
requires system_addresses::is_aptos_framework_address(signer::address_of(aptos_framework));
+
+ + + ### Function `fund` @@ -790,36 +883,94 @@ Register Aptos coin with Governed gas signer.
-Abort if the governed gas pool has insufficient funds + + + +### Function `deposit` -
aborts_with coin::EINSUFFICIENT_BALANCE, error::invalid_argument(EINSUFFICIENT_BALANCE), 0x1, 0x5, 0x7;
+
fun deposit<CoinType>(coin: coin::Coin<CoinType>)
 
- -### Function `deposit` +
pragma aborts_if_is_partial = true;
+let pool = global<GovernedGasPool>(@aptos_framework).signer_capability.account;
+// This enforces high-level requirement 3:
+requires exists<coin::CoinStore<CoinType>>(pool);
+ensures global<coin::CoinStore<CoinType>>(pool).coin.value
+    == old(global<coin::CoinStore<CoinType>>(pool).coin.value) + coin.value;
+
-
fun deposit<CoinType>(coin: coin::Coin<CoinType>)
+
+
+
+### Function `deposit_from`
+
+
+
fun deposit_from<CoinType>(account: address, amount: u64)
 
pragma aborts_if_is_partial = true;
+let pool = global<GovernedGasPool>(@aptos_framework).signer_capability.account;
+requires exists<coin::CoinStore<CoinType>>(pool);
 
- + -### Function `deposit_gas_fee` +### Function `deposit_gas_fee_v2` -
public fun deposit_gas_fee(_gas_payer: address, _gas_fee: u64)
+
public(friend) fun deposit_gas_fee_v2(gas_payer: address, gas_fee: u64)
+
+ + + + +
pragma aborts_if_is_partial = true;
+let pool = global<GovernedGasPool>(@aptos_framework).signer_capability.account;
+// This enforces high-level requirement 3:
+requires gas_payer != pool;
+requires exists<coin::CoinStore<AptosCoin>>(pool);
+requires exists<coin::CoinStore<AptosCoin>>(gas_payer);
+requires !features::spec_is_enabled(features::OPERATIONS_DEFAULT_TO_FA_APT_STORE);
+requires global<coin::CoinStore<AptosCoin>>(gas_payer).coin.value >= gas_fee;
+
+ + +The gas fee moves from the payer's store into the pool's store. + + +
ensures global<coin::CoinStore<AptosCoin>>(pool).coin.value
+    == old(global<coin::CoinStore<AptosCoin>>(pool).coin.value) + gas_fee;
+ensures global<coin::CoinStore<AptosCoin>>(gas_payer).coin.value
+    == old(global<coin::CoinStore<AptosCoin>>(gas_payer).coin.value) - gas_fee;
+
+ + + + + +### Function `deposit_treasury` + + +
public entry fun deposit_treasury(treasury_account: &signer, amount: u64)
+
+ + + + +
pragma aborts_if_is_partial = true;
+let pool = global<GovernedGasPool>(@aptos_framework).signer_capability.account;
+requires exists<coin::CoinStore<AptosCoin>>(pool);
+requires exists<GovernedGasPoolExtension>(@aptos_framework);
 
diff --git a/aptos-move/framework/aptos-framework/doc/governed_gas_pool_aggregator_test.md b/aptos-move/framework/aptos-framework/doc/governed_gas_pool_aggregator_test.md new file mode 100644 index 00000000000..d7ce186248d --- /dev/null +++ b/aptos-move/framework/aptos-framework/doc/governed_gas_pool_aggregator_test.md @@ -0,0 +1,30 @@ + + + +# Module `0x1::governed_gas_pool_aggregator_test` + +Isolated test to verify Aggregator V2 parallelism for GGP +This test creates multiple concurrent aggregator updates and measures performance + + +- [Constants](#@Constants_0) + + +
+ + + + + +## Constants + + + + + + +
const EAGGREGATOR_NOT_PARALLEL: u64 = 1;
+
+ + +[move-book]: https://aptos.dev/move/book/SUMMARY diff --git a/aptos-move/framework/aptos-framework/doc/reconfiguration.md b/aptos-move/framework/aptos-framework/doc/reconfiguration.md index d551ca96cb6..b77991203c1 100644 --- a/aptos-move/framework/aptos-framework/doc/reconfiguration.md +++ b/aptos-move/framework/aptos-framework/doc/reconfiguration.md @@ -39,6 +39,7 @@ to synchronize configuration changes for the validators. use 0x1::error; use 0x1::event; use 0x1::features; +use 0x1::governed_gas_pool; use 0x1::reconfiguration_state; use 0x1::signer; use 0x1::stake; @@ -399,6 +400,7 @@ Signal validators to start using new configuration. Must be called from friend c // Call stake to compute the new validator set and distribute rewards and transaction fees. stake::on_new_epoch(); storage_gas::on_reconfig(); + governed_gas_pool::on_reconfig(); assert!(current_time > config_ref.last_reconfiguration_time, error::invalid_state(EINVALID_BLOCK_TIME)); config_ref.last_reconfiguration_time = current_time; diff --git a/aptos-move/framework/aptos-framework/doc/stake.md b/aptos-move/framework/aptos-framework/doc/stake.md index 62a39294ee3..bbc0fdd6ee7 100644 --- a/aptos-move/framework/aptos-framework/doc/stake.md +++ b/aptos-move/framework/aptos-framework/doc/stake.md @@ -4761,6 +4761,17 @@ framework-published voting power in agreement with DKG's post-sweep view. + + + +
fun spec_get_lockup_secs(pool_address: address): u64 {
+   global<StakePool>(pool_address).locked_until_secs
+}
+
+ + + + @@ -5996,17 +6007,6 @@ framework-published voting power in agreement with DKG's post-sweep view. - - - - -
fun spec_get_lockup_secs(pool_address: address): u64 {
-   global<StakePool>(pool_address).locked_until_secs
-}
-
- - - ### Function `calculate_rewards_amount` @@ -6099,7 +6099,6 @@ framework-published voting power in agreement with DKG's post-sweep view. let amount = rewards_amount; let addr = type_info::type_of<AptosCoin>().account_address; aborts_if (rewards_amount > 0) && !exists<coin::CoinInfo<AptosCoin>>(addr); - modifies global<coin::CoinInfo<AptosCoin>>(addr); include (rewards_amount > 0) ==> coin::CoinAddAbortsIf<AptosCoin> { amount: amount }; }
diff --git a/aptos-move/framework/aptos-framework/doc/staking_contract.md b/aptos-move/framework/aptos-framework/doc/staking_contract.md index 85a4ffa6b75..4df53db1a5f 100644 --- a/aptos-move/framework/aptos-framework/doc/staking_contract.md +++ b/aptos-move/framework/aptos-framework/doc/staking_contract.md @@ -1319,6 +1319,16 @@ Store amount must be at least the min stake required for a stake pool to join th + + +Beneficiary cannot be a reserved address that cannot receive coin distributions. + + +
const EINVALID_BENEFICIARY_ADDRESS: u64 = 10;
+
+ + + Caller must be either the staker, operator, or beneficiary. @@ -2283,6 +2293,12 @@ the beneficiary. An operator can set one beneficiary for staking contract pools, assert!(features::operator_beneficiary_change_enabled(), std::error::invalid_state( EOPERATOR_BENEFICIARY_CHANGE_NOT_SUPPORTED )); + // @vm_reserved can never have an account created for it, so it can't receive coin distributions. + // Allowing it as a beneficiary would permanently brick distribution for the staking contract. + assert!( + new_beneficiary != @vm_reserved, + error::invalid_argument(EINVALID_BENEFICIARY_ADDRESS), + ); // The beneficiay address of an operator is stored under the operator's address. // So, the operator does not need to be validated with respect to a staking pool. let operator_addr = signer::address_of(operator); diff --git a/aptos-move/framework/aptos-framework/doc/transaction_validation.md b/aptos-move/framework/aptos-framework/doc/transaction_validation.md index 0c19498ab37..0cfb2ef2499 100644 --- a/aptos-move/framework/aptos-framework/doc/transaction_validation.md +++ b/aptos-move/framework/aptos-framework/doc/transaction_validation.md @@ -1673,10 +1673,11 @@ If there is no fee_payer, fee_payer = sender ); } else { let mint_amount = storage_fee_refunded - transaction_fee_amount; - // TODO: we cannot mint to do storage refund. We need to have a storage refund pool - if (!features::governed_gas_pool_enabled()){ + // TODO: Should storage refunds go to the governed gas pool or a separate storage refund pool? + if (mint_amount > 0) { transaction_fee::mint_and_refund(gas_payer_address, mint_amount); }; + permissioned_signer::increase_limit( &gas_payer, (mint_amount as u256), diff --git a/aptos-move/framework/aptos-framework/sources/governed_gas_pool.move b/aptos-move/framework/aptos-framework/sources/governed_gas_pool.move index ce3d6a81f9f..d943f791432 100644 --- a/aptos-move/framework/aptos-framework/sources/governed_gas_pool.move +++ b/aptos-move/framework/aptos-framework/sources/governed_gas_pool.move @@ -23,7 +23,10 @@ module aptos_framework::governed_gas_pool { friend aptos_framework::stake; friend aptos_framework::transaction_fee; + friend aptos_framework::reconfiguration; + /// Insufficient balance in the pool. + const EINSUFFICIENT_BALANCE: u64 = 1; /// No longer supported. const ENO_LONGER_SUPPORTED: u64 = 4; @@ -70,7 +73,7 @@ module aptos_framework::governed_gas_pool { public fun initialize( aptos_framework: &signer, delegation_pool_creation_seed: vector, - ) { + ) acquires GovernedGasPool { system_addresses::assert_aptos_framework(aptos_framework); // return if the governed gas pool has already been initialized @@ -80,9 +83,10 @@ module aptos_framework::governed_gas_pool { deposited_treasury_counter: 0, withdraw_staking_reward_events: account::new_event_handle(aptos_framework), }); - } - } else { + }; + upgrade_pool_store_to_concurrent(&governed_gas_signer()); + } else { // generate a seed to be used to create the resource account hosting the delegation pool let seed = create_resource_account_seed(delegation_pool_creation_seed); @@ -98,6 +102,15 @@ module aptos_framework::governed_gas_pool { deposited_treasury_counter: 0, withdraw_staking_reward_events: account::new_event_handle(aptos_framework), }); + + upgrade_pool_store_to_concurrent(&governed_gas_pool_signer); + } + } + + /// If the CONCURRENT_FUNGIBLE_BALANCE feature is enabled, upgrade the governed gas pool to a concurrent store + public(friend) fun on_reconfig() acquires GovernedGasPool { + if (exists(@aptos_framework)) { + upgrade_pool_store_to_concurrent(&governed_gas_signer()); } } @@ -105,23 +118,31 @@ module aptos_framework::governed_gas_pool { /// @param aptos_framework The signer of the aptos_framework module. public entry fun initialize_governed_gas_pool_extension( aptos_framework: &signer, - ) { + ) { system_addresses::assert_aptos_framework(aptos_framework); // return if the governed gas extension has already been initialized - if (exists(signer::address_of(aptos_framework))) { - } else { + if (!exists(signer::address_of(aptos_framework))) { + move_to(aptos_framework, GovernedGasPoolExtension{ + deposited_treasury_counter: 0, + withdraw_staking_reward_events: account::new_event_handle(aptos_framework), + }); + }; + } - move_to(aptos_framework, GovernedGasPoolExtension{ - deposited_treasury_counter: 0, - withdraw_staking_reward_events: account::new_event_handle(aptos_framework), - }); - } + /// Ensure the pool is using aggregator_v2 for concurrentcy. + /// @param pool_signer The signer of the gas pool. + fun upgrade_pool_store_to_concurrent(pool_signer: &signer) { + if (features::concurrent_fungible_balance_enabled()) { + let store_addr = primary_fungible_store_address(signer::address_of(pool_signer)); + let store = object::address_to_object(store_addr); + fungible_asset::upgrade_store_to_concurrent(pool_signer, store); + }; } /// Initialize the governed gas pool as a module /// @param aptos_framework The signer of the aptos_framework module. - fun init_module(aptos_framework: &signer) { + fun init_module(aptos_framework: &signer) acquires GovernedGasPool { // Initialize the governed gas pool let seed : vector = b"aptos_framework::governed_gas_pool"; initialize(aptos_framework, seed); @@ -207,6 +228,8 @@ module aptos_framework::governed_gas_pool { /// @param gas_payer The address of the account that paid the gas fees. /// @param gas_fee The amount of gas fees to be deposited. public(friend) fun deposit_gas_fee_v2(gas_payer: address, gas_fee: u64) acquires GovernedGasPool { + if (gas_fee == 0) return; + if (features::operations_default_to_fa_apt_store_enabled()) { deposit_from_fungible_store(gas_payer, gas_fee); } else { @@ -245,18 +268,19 @@ module aptos_framework::governed_gas_pool { amount: u64 ): Coin acquires GovernedGasPool, GovernedGasPoolExtension { let balance = get_balance(); - assert!(balance >= amount, 0); // insufficient balance - let ggpv2 = borrow_global_mut(@aptos_framework); + assert!(balance >= amount, EINSUFFICIENT_BALANCE); + let reward = coin::withdraw(&governed_gas_signer(), amount); + + // Use aggregators only if feature is enabled AND counters are initialized. + // This avoids aborts between feature rollout and extension initialization. + let ggpv2 = borrow_global_mut(@aptos_framework); event::emit_event( &mut ggpv2.withdraw_staking_reward_events, - WithdrawStakingRewardEvent { - amount, - }, + WithdrawStakingRewardEvent { amount }, ); - - // Withdraw reward coin. - coin::withdraw(&governed_gas_signer(), amount) + + reward } /// Register Aptos coin with Governed gas signer. @@ -315,7 +339,7 @@ module aptos_framework::governed_gas_pool { /// @param aptos_framework The signer of the aptos_framework module. public fun initialize_for_test( aptos_framework: &signer, - ) { + ) acquires GovernedGasPool { // Create framework account to be able to send event. aptos_framework::account::create_account_for_test(@aptos_framework); @@ -453,7 +477,7 @@ module aptos_framework::governed_gas_pool { } #[test(aptos_framework = @aptos_framework)] - fun test_initialize_is_idempotent(aptos_framework: &signer) { + fun test_initialize_is_idempotent(aptos_framework: &signer) acquires GovernedGasPool { // initialize the governed gas pool initialize_for_test(aptos_framework); // initialize the governed gas pool again, no abort @@ -466,10 +490,10 @@ module aptos_framework::governed_gas_pool { /// /// @param aptos_framework is the signer of the aptos_framework module. fun test_deposite_treasury_and_counter(aptos_framework: &signer, treasury: &signer) acquires GovernedGasPool, GovernedGasPoolExtension, AptosCoinMintCapability { - + // initialize the modules initialize_for_test(aptos_framework); - + // create the depositor account and fund it aptos_account::create_account(signer::address_of(treasury)); mint_for_test(signer::address_of(treasury), 1000); diff --git a/aptos-move/framework/aptos-framework/sources/governed_gas_pool.spec.move b/aptos-move/framework/aptos-framework/sources/governed_gas_pool.spec.move index decae85a9b8..a15d4d45c9d 100644 --- a/aptos-move/framework/aptos-framework/sources/governed_gas_pool.spec.move +++ b/aptos-move/framework/aptos-framework/sources/governed_gas_pool.spec.move @@ -1,5 +1,4 @@ spec aptos_framework::governed_gas_pool { - use aptos_framework::coin::EINSUFFICIENT_BALANCE; use aptos_framework::error; /// @@ -34,7 +33,13 @@ spec aptos_framework::governed_gas_pool { invariant exists(@aptos_framework); } + spec init_module(aptos_framework: &signer) { + requires system_addresses::is_aptos_framework_address(signer::address_of(aptos_framework)); + } + spec initialize(aptos_framework: &signer, delegation_pool_creation_seed: vector) { + pragma aborts_if_is_partial = true; + requires system_addresses::is_aptos_framework_address(signer::address_of(aptos_framework)); /// [high-level-req-1] ensures exists(@aptos_framework); @@ -46,34 +51,54 @@ spec aptos_framework::governed_gas_pool { /// [high-level-req-4] // Abort if the caller is not the Aptos framework aborts_if !system_addresses::is_aptos_framework_address(signer::address_of(aptos_framework)); - - /// Abort if the governed gas pool has insufficient funds - aborts_with coin::EINSUFFICIENT_BALANCE, error::invalid_argument(EINSUFFICIENT_BALANCE), 0x1, 0x5, 0x7; } spec deposit(coin: Coin) { pragma aborts_if_is_partial = true; - /* + let pool = global(@aptos_framework).signer_capability.account; + /// [high-level-req-3] - /// Ensure the deposit increases the value in the CoinStore + /// The pool always has a registered CoinStore (register_coin at init), + /// so coin::deposit takes the merge branch and the balance increases by coin.value. + requires exists>(pool); - //@TODO: Calling governed_gas_pool_adddress() doesn't work as the boogie gen cant check the signer - // created for the resource account created at runtime + ensures global>(pool).coin.value + == old(global>(pool).coin.value) + coin.value; + } - /// Ensure the governed gas pool resource account exists - //aborts_if !exists>(governed_gas_pool_address()); + spec deposit_from(account: address, amount: u64) { + pragma aborts_if_is_partial = true; + let pool = global(@aptos_framework).signer_capability.account; + requires exists>(pool); + } - //ensures global>(aptos_framework_address).coin.value == - //old(global>(aptos_framework_address).coin.value) + coin.value; - */ + spec deposit_treasury(treasury_account: &signer, amount: u64) { + pragma aborts_if_is_partial = true; + let pool = global(@aptos_framework).signer_capability.account; + requires exists>(pool); + requires exists(@aptos_framework); } - spec deposit_gas_fee(_gas_payer: address, _gas_fee: u64) { - /* - /// [high-level-req-5] - // ensures governed_gas_pool_balance == old(governed_gas_pool_balance) + gas_fee; - // ensures gas_payer_balance == old(gas_payer_balance) - gas_fee; - */ + spec deposit_gas_fee_v2(gas_payer: address, gas_fee: u64) { + pragma aborts_if_is_partial = true; + + let pool = global(@aptos_framework).signer_capability.account; + + /// [high-level-req-3] + /// Characterizes the legacy coin path. The FA-store path + /// (operations_default_to_fa_apt_store_enabled) routes the fee through the + /// payer's primary fungible store instead and is not covered here. + requires gas_payer != pool; + requires exists>(pool); + requires exists>(gas_payer); + requires !features::spec_is_enabled(features::OPERATIONS_DEFAULT_TO_FA_APT_STORE); + requires global>(gas_payer).coin.value >= gas_fee; + + /// The gas fee moves from the payer's store into the pool's store. + ensures global>(pool).coin.value + == old(global>(pool).coin.value) + gas_fee; + ensures global>(gas_payer).coin.value + == old(global>(gas_payer).coin.value) - gas_fee; } } diff --git a/aptos-move/framework/aptos-framework/sources/reconfiguration.move b/aptos-move/framework/aptos-framework/sources/reconfiguration.move index b8a31abfb83..1c13da833d4 100644 --- a/aptos-move/framework/aptos-framework/sources/reconfiguration.move +++ b/aptos-move/framework/aptos-framework/sources/reconfiguration.move @@ -13,6 +13,7 @@ module aptos_framework::reconfiguration { use aptos_framework::chain_status; use aptos_framework::reconfiguration_state; use aptos_framework::storage_gas; + use aptos_framework::governed_gas_pool; friend aptos_framework::aptos_governance; friend aptos_framework::block; @@ -133,6 +134,7 @@ module aptos_framework::reconfiguration { // Call stake to compute the new validator set and distribute rewards and transaction fees. stake::on_new_epoch(); storage_gas::on_reconfig(); + governed_gas_pool::on_reconfig(); assert!(current_time > config_ref.last_reconfiguration_time, error::invalid_state(EINVALID_BLOCK_TIME)); config_ref.last_reconfiguration_time = current_time; diff --git a/aptos-move/framework/aptos-framework/sources/stake.spec.move b/aptos-move/framework/aptos-framework/sources/stake.spec.move index 49d17afbb88..a1cf807eb01 100644 --- a/aptos-move/framework/aptos-framework/sources/stake.spec.move +++ b/aptos-move/framework/aptos-framework/sources/stake.spec.move @@ -600,7 +600,6 @@ spec aptos_framework::stake { let amount = rewards_amount; let addr = type_info::type_of().account_address; aborts_if (rewards_amount > 0) && !exists>(addr); - modifies global>(addr); include (rewards_amount > 0) ==> coin::CoinAddAbortsIf { amount: amount }; } diff --git a/aptos-move/framework/aptos-framework/sources/transaction_validation.move b/aptos-move/framework/aptos-framework/sources/transaction_validation.move index 82fdc56f617..200eb1d85f7 100644 --- a/aptos-move/framework/aptos-framework/sources/transaction_validation.move +++ b/aptos-move/framework/aptos-framework/sources/transaction_validation.move @@ -868,10 +868,11 @@ module aptos_framework::transaction_validation { ); } else { let mint_amount = storage_fee_refunded - transaction_fee_amount; - // TODO: we cannot mint to do storage refund. We need to have a storage refund pool - if (!features::governed_gas_pool_enabled()){ + // TODO: Should storage refunds go to the governed gas pool or a separate storage refund pool? + if (mint_amount > 0) { transaction_fee::mint_and_refund(gas_payer_address, mint_amount); }; + permissioned_signer::increase_limit( &gas_payer, (mint_amount as u256), diff --git a/aptos-move/framework/move-stdlib/doc/features.md b/aptos-move/framework/move-stdlib/doc/features.md index 9facb18e9ab..817df6403da 100644 --- a/aptos-move/framework/move-stdlib/doc/features.md +++ b/aptos-move/framework/move-stdlib/doc/features.md @@ -848,6 +848,7 @@ Lifetime: transient Whether the Atomic bridge is available Lifetime: transient +Deprecated in favor of ALLOW_SERIALIZED_SCRIPT_ARGS as feature flag 72
const NATIVE_BRIDGE: u64 = 72;
diff --git a/testsuite/smoke-test/src/aptos_cli/validator.rs b/testsuite/smoke-test/src/aptos_cli/validator.rs
index 852c0badcd5..9ba2c9ab3fa 100644
--- a/testsuite/smoke-test/src/aptos_cli/validator.rs
+++ b/testsuite/smoke-test/src/aptos_cli/validator.rs
@@ -1745,15 +1745,18 @@ async fn test_multivalidator_staking_reward_impl() {
         tokio::time::sleep(Duration::from_secs(5)).await;
 
         // Trigger epoch change
-        let epoch_result = reconfig(
+        let epoch_state = reconfig(
             &rest_client,
             &transaction_factory,
             swarm.chain_info().root_account(),
         )
         .await;
 
-        // Get state after epoch
-        let (epoch_state, epoch_validator_set) = get_validator_set_and_state(&rest_client).await;
+        // Read the validator set at the exact version the reconfig produced — not
+        // "latest", which can drift forward due to background (timer-based) epoch
+        // changes and make the per-epoch reward deltas race intermittently.
+        let epoch_validator_set =
+            get_validator_set_at_version(&rest_client, epoch_state.version).await;
         println!(
             "\n=== After Round {} (Blockchain Epoch: {}, Version: {}) ===",
             epoch_num, epoch_state.epoch, epoch_state.version
@@ -1804,15 +1807,15 @@ async fn test_multivalidator_staking_reward_impl() {
 
         // Store final epoch info
         if epoch_num == 2 {
-            final_epoch_info = Some((epoch_result, epoch_state, epoch_validator_set));
+            final_epoch_info = Some((epoch_state, epoch_validator_set));
         }
     }
 
     // Extract final epoch data
-    let (final_epoch_result, final_state, final_validator_set) = final_epoch_info.unwrap();
+    let (final_state, final_validator_set) = final_epoch_info.unwrap();
 
     // Calculate actual epoch count and expected rate
-    let actual_epochs = final_epoch_result.epoch - initial_state.epoch;
+    let actual_epochs = final_state.epoch - initial_state.epoch;
     let expected_rate = per_epoch_rate * (actual_epochs as f64);
 
     println!(
@@ -1880,16 +1883,16 @@ async fn test_multivalidator_staking_reward_impl() {
     // Use the CLI to analyze validator performance
     cli.analyze_validator_performance(
         Some(initial_state.epoch as i64),
-        Some(final_epoch_result.epoch as i64),
+        Some(final_state.epoch as i64),
     )
     .await
     .unwrap();
 
     // Verify we ran through at least 2 epochs (may be more due to initialization)
     assert!(
-        final_epoch_result.epoch - initial_state.epoch >= 2,
+        final_state.epoch - initial_state.epoch >= 2,
         "Should have progressed through at least 2 epochs, actual: {}",
-        final_epoch_result.epoch - initial_state.epoch
+        final_state.epoch - initial_state.epoch
     );
 
     // Fetch and verify WithdrawStakingRewardEvent amounts match the stake rewards
@@ -1977,6 +1980,30 @@ async fn get_validator_set_and_state(rest_client: &Client) -> (State, HashMap HashMap {
+    let validator_set: ValidatorSet = rest_client
+        .get_account_resource_at_version_bcs(
+            CORE_CODE_ADDRESS,
+            "0x1::stake::ValidatorSet",
+            version,
+        )
+        .await
+        .unwrap()
+        .into_inner();
+
+    validator_set
+        .active_validators
+        .iter()
+        .map(|v| (v.account_address, v.consensus_voting_power()))
+        .collect::>()
+}
+
 /// Creates a Features object with specific features disabled for testing
 /// Disables FA migration features (treasury rewards will be enabled via governance after GGP has balance)
 /// Disables:
@@ -2163,7 +2190,7 @@ async fn test_governed_gas_pool_depletion_failsafe_impl() {
         // Before the failsafe fix, this would ABORT if pool balance < required rewards
         // After the fix, this should SUCCEED with partial or zero rewards
         println!("\nTriggering epoch change #{}...", epoch_num);
-        let _epoch_result = reconfig(
+        let epoch_state = reconfig(
             &rest_client,
             &transaction_factory,
             swarm.chain_info().root_account(),
@@ -2171,7 +2198,10 @@ async fn test_governed_gas_pool_depletion_failsafe_impl() {
         .await;
 
         // Get state after epoch - if we get here, epoch change succeeded!
-        let (epoch_state, epoch_validator_set) = get_validator_set_and_state(&rest_client).await;
+        // Read the validator set at the exact version the reconfig produced, so it
+        // can't drift due to background (timer-based) epoch changes.
+        let epoch_validator_set =
+            get_validator_set_at_version(&rest_client, epoch_state.version).await;
         println!(
             "Epoch change #{} SUCCEEDED! (Blockchain Epoch: {}, Version: {})",
             epoch_num, epoch_state.epoch, epoch_state.version