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