diff --git a/crates/iota-e2e-tests/tests/snapshot_tests.rs b/crates/iota-e2e-tests/tests/snapshot_tests.rs index 9c482884972..65cde1c5ae8 100644 --- a/crates/iota-e2e-tests/tests/snapshot_tests.rs +++ b/crates/iota-e2e-tests/tests/snapshot_tests.rs @@ -56,19 +56,17 @@ async fn basic_read_cmd_snapshot_tests() -> Result<(), anyhow::Error> { let mut test_cluster = TestClusterBuilder::new().build().await; let context = &mut test_cluster.wallet; + // These object ids and transaction digest are picked by executing this test and + // copying over some random ids from the snapshot file let cmds = vec![ "iota client objects {ME}", // valid addr "iota client objects 0x0000000000000000000000000000000000000000000000000000000000000000", /* empty addr */ "iota client object 0x5", // valid object "iota client object 0x5 --bcs", // valid object BCS - // Simtest object IDs are not stable so these object IDs may or may not exist currently -- - // commenting them out for now. - // "iota client object 0x3b5121a0603ef7ab4cb57827fceca17db3338ef2cd76126cc1523b681df27cee", - // // valid object "iota client object - // 0x3b5121a0603ef7ab4cb57827fceca17db3338ef2cd76126cc1523b681df27cee --bcs", // valid - // object BCS + "iota client object 0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1", /* valid object */ + "iota client object 0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1 --bcs", /* valid object BCS */ "iota client object 0x0000000000000000000000000000000000000000000000000000000000000000", /* non-existent object */ - "iota client tx-block 5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", // valid tx digest + "iota client tx-block E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", // valid tx digest "iota client tx-block 11111111111111111111111111111111", /* non-existent tx * digest */ ]; diff --git a/crates/iota-e2e-tests/tests/snapshots/snapshot_tests__body_fn.snap b/crates/iota-e2e-tests/tests/snapshots/snapshot_tests__body_fn.snap index 90e0d1468c9..8a61ca65af0 100644 --- a/crates/iota-e2e-tests/tests/snapshots/snapshot_tests__body_fn.snap +++ b/crates/iota-e2e-tests/tests/snapshots/snapshot_tests__body_fn.snap @@ -1,21 +1,20 @@ --- source: crates/iota-e2e-tests/tests/snapshot_tests.rs expression: "run_one(cmds, context).await?" -snapshot_kind: text --- [ "iota client objects {ME}", [ { "data": { - "objectId": "0x5b0e7d31f9c3a421f94dae3511983a2be67e04a7071171da2380f82be103239f", + "objectId": "0x495af1962cebf47d1eb0cdabb02508114dc8a05c8bb4e6c18b8e81af78c8c4b5", "version": "1", - "digest": "6s1xQf5HR8HMLNaR1QxPcfV4Ys8AL94UUg7cRpD6r4WD", + "digest": "A7cf1SRMJYAqceQb78geXHujpHQuiqEggZnWu24enHu1", "type": "0x2::coin::Coin<0x2::iota::IOTA>", "owner": { "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, - "previousTransaction": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "previousTransaction": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "storageRebate": "0", "content": { "dataType": "moveObject", @@ -23,7 +22,7 @@ snapshot_kind: text "fields": { "balance": "30000000000000000", "id": { - "id": "0x5b0e7d31f9c3a421f94dae3511983a2be67e04a7071171da2380f82be103239f" + "id": "0x495af1962cebf47d1eb0cdabb02508114dc8a05c8bb4e6c18b8e81af78c8c4b5" } } } @@ -31,14 +30,14 @@ snapshot_kind: text }, { "data": { - "objectId": "0x5ee269cea868091ea1c5da5f15581c2f7b1708413b3bdda3e4c9528f2b3a5bb9", + "objectId": "0x6689ff8b1b4ce68bde6f39ebd1031e0339a4036a66b7d0a85c366ac0e6817748", "version": "1", - "digest": "7mvhi6RxxMnPohJzMnCYoLHBTLUcRtwFtBXe1ZoanE6D", + "digest": "GYs13Dvcx4XAj76Q4fYfXEgFTyUvVfZYorzvFv8KBRrc", "type": "0x2::coin::Coin<0x2::iota::IOTA>", "owner": { "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, - "previousTransaction": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "previousTransaction": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "storageRebate": "0", "content": { "dataType": "moveObject", @@ -46,7 +45,7 @@ snapshot_kind: text "fields": { "balance": "30000000000000000", "id": { - "id": "0x5ee269cea868091ea1c5da5f15581c2f7b1708413b3bdda3e4c9528f2b3a5bb9" + "id": "0x6689ff8b1b4ce68bde6f39ebd1031e0339a4036a66b7d0a85c366ac0e6817748" } } } @@ -54,14 +53,14 @@ snapshot_kind: text }, { "data": { - "objectId": "0x759bb64d0a576b00a8aae6d439da4a72ef7d8797282c90211bab2bc723cd48e5", + "objectId": "0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1", "version": "1", - "digest": "7cuKDvum6Rx2utLqquqYZGr6K3S5xbA2fq88cqs8qjZd", + "digest": "5B8YV4P7Q93phJVPgm8MVZzsoXdSxFnKLAjAkMnLYcQb", "type": "0x2::coin::Coin<0x2::iota::IOTA>", "owner": { "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, - "previousTransaction": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "previousTransaction": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "storageRebate": "0", "content": { "dataType": "moveObject", @@ -69,7 +68,7 @@ snapshot_kind: text "fields": { "balance": "30000000000000000", "id": { - "id": "0x759bb64d0a576b00a8aae6d439da4a72ef7d8797282c90211bab2bc723cd48e5" + "id": "0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1" } } } @@ -77,14 +76,14 @@ snapshot_kind: text }, { "data": { - "objectId": "0xa010e1486bfd2f1d7c57a3b2c2edd369e64e8fddc1ca17667314317273cb491d", + "objectId": "0x94b18ab08b2ddd60e7db0756a605bd31589136eb861b76f49ff3b5ae688f65bc", "version": "1", - "digest": "DAFo7bkSkk2XRZv88Nb2V9jatTse1TYTqgMmVxVKGRtF", + "digest": "DXGesd5mWPPaLtwza28GDfumr9NqswcfpbcHp2LaL287", "type": "0x2::coin::Coin<0x2::iota::IOTA>", "owner": { "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, - "previousTransaction": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "previousTransaction": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "storageRebate": "0", "content": { "dataType": "moveObject", @@ -92,7 +91,7 @@ snapshot_kind: text "fields": { "balance": "30000000000000000", "id": { - "id": "0xa010e1486bfd2f1d7c57a3b2c2edd369e64e8fddc1ca17667314317273cb491d" + "id": "0x94b18ab08b2ddd60e7db0756a605bd31589136eb861b76f49ff3b5ae688f65bc" } } } @@ -100,14 +99,14 @@ snapshot_kind: text }, { "data": { - "objectId": "0xb279227ad10111e5d870facc26d048a05bc440859e718cde0e3bbf257765544c", + "objectId": "0x9ee19bb4564baa0449b5160e4dccd02d5d8a54ca794aaba2130db4feb809c1f5", "version": "1", - "digest": "BZaGDacxqx5MFLFm6F3UeBVpHG5hZykqSHFoD1o5F5kq", + "digest": "zoUU8mDtdVPRCqfRKWmd5VpMNfgBHd4jVjq4gu8i9vn", "type": "0x2::coin::Coin<0x2::iota::IOTA>", "owner": { "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, - "previousTransaction": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "previousTransaction": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "storageRebate": "0", "content": { "dataType": "moveObject", @@ -115,7 +114,7 @@ snapshot_kind: text "fields": { "balance": "30000000000000000", "id": { - "id": "0xb279227ad10111e5d870facc26d048a05bc440859e718cde0e3bbf257765544c" + "id": "0x9ee19bb4564baa0449b5160e4dccd02d5d8a54ca794aaba2130db4feb809c1f5" } } } @@ -130,14 +129,14 @@ snapshot_kind: text "data": { "objectId": "0x0000000000000000000000000000000000000000000000000000000000000005", "version": "1", - "digest": "73woKiMAUkS1ejdzSwyD1WLDCxsPVYURbwpMBa64Tu4h", + "digest": "8CWv4f5Nov5aRXTQa2EJk7zsNhfKVbX1fEG8VP6Wsa6d", "type": "0x3::iota_system::IotaSystemState", "owner": { "Shared": { "initial_shared_version": 1 } }, - "previousTransaction": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "previousTransaction": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "storageRebate": "0", "content": { "dataType": "moveObject", @@ -158,14 +157,14 @@ snapshot_kind: text "data": { "objectId": "0x0000000000000000000000000000000000000000000000000000000000000005", "version": "1", - "digest": "73woKiMAUkS1ejdzSwyD1WLDCxsPVYURbwpMBa64Tu4h", + "digest": "8CWv4f5Nov5aRXTQa2EJk7zsNhfKVbX1fEG8VP6Wsa6d", "type": "0x3::iota_system::IotaSystemState", "owner": { "Shared": { "initial_shared_version": 1 } }, - "previousTransaction": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "previousTransaction": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "storageRebate": "0", "bcs": { "dataType": "moveObject", @@ -176,6 +175,54 @@ snapshot_kind: text } } ], + "iota client object 0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1", + [ + { + "data": { + "objectId": "0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1", + "version": "1", + "digest": "5B8YV4P7Q93phJVPgm8MVZzsoXdSxFnKLAjAkMnLYcQb", + "type": "0x2::coin::Coin<0x2::iota::IOTA>", + "owner": { + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + }, + "previousTransaction": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", + "storageRebate": "0", + "content": { + "dataType": "moveObject", + "type": "0x2::coin::Coin<0x2::iota::IOTA>", + "fields": { + "balance": "30000000000000000", + "id": { + "id": "0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1" + } + } + } + } + } + ], + "iota client object 0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1 --bcs", + [ + { + "data": { + "objectId": "0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1", + "version": "1", + "digest": "5B8YV4P7Q93phJVPgm8MVZzsoXdSxFnKLAjAkMnLYcQb", + "type": "0x2::coin::Coin<0x2::iota::IOTA>", + "owner": { + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + }, + "previousTransaction": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", + "storageRebate": "0", + "bcs": { + "dataType": "moveObject", + "type": "0x2::coin::Coin<0x2::iota::IOTA>", + "version": 1, + "bcsBytes": "kTXLO1rKmaFVW3Qr0R3cRfujM0O+GCvcFhvmnaLEG+EAAENP15RqAA==" + } + } + } + ], "iota client object 0x0000000000000000000000000000000000000000000000000000000000000000", [ { @@ -185,9 +232,9 @@ snapshot_kind: text } } ], - "iota client tx-block 5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "iota client tx-block E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", { - "digest": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "digest": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "transaction": { "data": { "messageVersion": "v1", @@ -203,64 +250,64 @@ snapshot_kind: text "0x000000000000000000000000000000000000000000000000000000000000000b", "0x0000000000000000000000000000000000000000000000000000000000000403", "0x000000000000000000000000000000000000000000000000000000000000107a", - "0x018673f8b9c2eee4dd923fb6fcb3eb77d0e33d15921ac59f1c57ea7dfe4c3f40", - "0x08e1bd72a9f239c8e99a3ee8f1f4141b48ba063ecc0ebff878152e2b481b94bc", - "0x163b3f079eb959dc96768c65497ef5c3b48106439a306324c484a8d28e0ba50f", - "0x16d23fb8f64faebeea28ecdd43d96cb60ed1c5a297347d61a0c3fa4fff08944e", - "0x1a1f82376293f736136384ae03744241eb257a82f25eb223c7ef02e67442d6df", - "0x1d8f7a031fcca49d212b5bf2b57704913f7c6ca423357a01dda70a150e8a35b0", - "0x1f3119f496e7c38af65bc0f29ee79354de5f554d03d0aa433bee015e280e97b4", - "0x2438ca49fb81fc37f74d890207c3a922b27de14b474525b4fa111de094e5194c", - "0x303fac6452e9b844d960dcd60c84efbbd28b017774787c58705b67af946d7076", - "0x3238c6a409ed6951125aaea3334cf632e053e0d09507e8a53d4b4b5923b896d0", - "0x3873a7b96acdc98bfa6db49a096f8e704caa6dc7cca29aecff52abe11442dc3f", - "0x3e5b52bc91e54ac367f5987785c7b0a68869a4be2eb0a74f7bee2172e0a70dbc", - "0x3fb0323b083da0415032b289cb6e610388de91f9666a67c02df8ddd9edb00f4c", - "0x4451b2f6d468c331dafa10f4b3fbf057b89f684553bf9298d0c4f8e61df2fa95", - "0x4547fa20f95dcc6e221d18eaf933f993ee8f46f98eef1705853a71f9c917c185", - "0x49315560aecdcf0beba3cfccb2d04f29f5d95b440cb0b6dadec64349b81083d6", - "0x497d698dce0d808d05cb3543b2decd461eb67a0a832acf7e3d822ff61663acb4", - "0x4a4a868c023e670163f57e2467cccdaedef147daf5170fc9b0ce7caa48284a76", - "0x4df66b7aab12f518bfba67b0081cadb8a321870b171a98d2aceafb6804e3b003", - "0x50948c5a6a706b267a6b2c2a4a2043d28ba11c5e022198f58be4182d65987a2d", - "0x58efd4d54b74b390e2d3bbe785ec5df555c366b1a6eb616fb07c44d6c3f67c8c", - "0x5b0e7d31f9c3a421f94dae3511983a2be67e04a7071171da2380f82be103239f", - "0x5c995a223cf5e88e2d19935481d2d06b2e55977cb3615ad6784cc360a42d6501", - "0x5ee269cea868091ea1c5da5f15581c2f7b1708413b3bdda3e4c9528f2b3a5bb9", - "0x61f2f500cb861d8d92affc84519c4c0a6b794058b58607768c8e38ab275de0eb", + "0x00d74df673e00106b1a45136cf8cfae1ca792c3de53232e06d09fbf5d4f60b66", + "0x0214b29e560e3fa6b37836ed7167db0da40a1823cf8b01f0690e1b3bfb4ebdc5", + "0x04942308c8384041a5af2c13c807418d069d3a6e53519dadd1236f0344385a14", + "0x137cb52b1bbef8e93857fd3dc67f7f70f2aabc1d7d6eb4afb28e7dea87b9ccf1", + "0x2a74fa6e7b6f90225cb36fcdc3e416d1d3d9e209ab14aafff3afd2c3587c9aec", + "0x2ad996aa647ab628cf294b4d98b24c9debb351e72b4a72ee3425b7d9a41d08a8", + "0x30f537424026a4259959d4c28f4b474558ba881bb517267f9dac6e7bc7518a5d", + "0x3ad5e2039f28a1d146d5f7e2094b7e55f1cc35f34a53aa207250d51e76febbb4", + "0x3e14d7d3f210d79f29a18955f4e98676ebb40e51119ddd6d26a8add99daceb95", + "0x3e5742903bb62d61adea88aa26bad2fad57984e3eefc58a2f1810b82228e5117", + "0x42cfd74b065c48da45fe6048796ce9cdd3a380c182e7d89573fabc229e3ce4ab", + "0x4728ee263c6a7de9fcd0d4d58db500e0ceed99977f44ca323e9a521970efd085", + "0x495af1962cebf47d1eb0cdabb02508114dc8a05c8bb4e6c18b8e81af78c8c4b5", + "0x608863c1d4738cb9829f9bd7c5b3ab15123b6e6eab762dedcfacc23ec23d37c9", + "0x660e677bad9d848d1f131d14faef42025eedf0f0e14ede894760e0ebb51a80da", + "0x6689ff8b1b4ce68bde6f39ebd1031e0339a4036a66b7d0a85c366ac0e6817748", + "0x69cd03a3cc6b2e4a1eae6bef4892f642d8f87ed3d83b758cc5242034bd36f565", "0x6af2a2b7ca60bf76174adfd3e9c4957f8e937759603182f9b46c7f6c5f19c6d2", - "0x6b517df3c5888ce924d7871e550989f835335c726a43a224ce3df6b6dfa53666", - "0x759bb64d0a576b00a8aae6d439da4a72ef7d8797282c90211bab2bc723cd48e5", - "0x76472cb3b720491fb9a66db21befaed5fbc8528976bc6fb2bc3c5deeef9d114c", - "0x7c9f819b470ae3ac98b6e44eeea9b461d66a38b22a3d2f61ce62c69f68d0c71a", - "0x81c7cfd9c7fa81f57a59f14739ee82157fc6a04d48a1b0a6e1187a8898042299", - "0x85a7aabfb1d8ef14efd87338a58efcdbfaf0cab5e5fc247ccd1080dcdd3d2d7f", - "0x8cd9aca3790437fc6b1b7258c5fefb2e95ffb54134aae1fd04ba757d4286055d", - "0x8fd46357d5ae46f9ee8de7d9b6dfc9da4e497c70dbd2ce5c2fc124658798d5c9", - "0xa010e1486bfd2f1d7c57a3b2c2edd369e64e8fddc1ca17667314317273cb491d", - "0xa6e659b1120b373f598d1f6c3214d73abda596eb913857e1fa471ab4420f2e27", - "0xb271c22281276193f817eeab5291b79f5f37698a21323fbafe014e1774c3d22e", - "0xb279227ad10111e5d870facc26d048a05bc440859e718cde0e3bbf257765544c", - "0xbb43894417b1b4a4cee286133d85cae9706c217d150daf4d12168bc5e9147d78", - "0xc066a3793934a82847a3cee2a0dd84832ba1ba24b71ac0602b1a60cbbe553d17", - "0xc79de55a6454ac8e927645a08e4e9b3ce8e814ce9fc25eb7a347a91fc2228f4f", - "0xc7ee80d93a34f12ff58b0ceaf16c4e06ee6ceeb547b031b0d3eab1a8a6ca873f", - "0xd1e455eb2c367047a03756eb830bf0d2357b0c69905f0d4f3a648cc81498905e", - "0xd26171201bf3e074f1d1c694ea6ebc5d95d75b75583c393055efbca3eeb9c629", - "0xd6090aa14b28b0e907434cd8f8469b24769a80ebd722f18df48fe59e5fd47c0f", - "0xe47935c2607151b36e2e7d6971418157d7a8997ab2771ae779f5b6a2230334c9", - "0xe54599f1bb4b687498caf1e5212c6eaf0b088dcc8159d283ecf2c6287ede48dc", - "0xefd24c24d3784edec255308f6fc3619f65902ebd122f5a34b105727994326ce1", - "0xfbf79fe230691c666820739add167373a61a7faa858231f42feb961ec8fffcf5", - "0xffc04eb3011a2933dd0fbfff34cbd6759dbf999f7e2ac372e08d577c56a459cb" + "0x6b2a75a39565fe93f6f2694e79274205ec65dac6aecff0a38b3c3947e2c9e561", + "0x82054bc6567488b4924203907f0bc62f3f789e1f5edc901798c5a58042dfa1a8", + "0x8a23c86abe72190400e37fd3affc876000ad1302712cbdaf76077f7d541b6400", + "0x9045719b475148ea5e0547b2a0dd8f8aaa19a658deac6bfca7a184d1dfa13d87", + "0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1", + "0x9254a40663ad7e72d73dd1f04b1eca4e0486cc9f54cdd9a7c3d4e479a8131aa0", + "0x939337494e5c4fe00e78f120459bf108367938719f717e32c845ab83e762f22c", + "0x94b18ab08b2ddd60e7db0756a605bd31589136eb861b76f49ff3b5ae688f65bc", + "0x98c27dcdc3cb082f2ae47756648c92ee054721273663cf0ad25d7f2d4fd20128", + "0x9bafea6cfb0a89e0eee6e66ec0d598848067196ed07857012e00e609e8f3ca17", + "0x9df5ecf6c7c2ed3f31b6ff471aaea04af7d331647c34ab319c8eef45dd043620", + "0x9ee19bb4564baa0449b5160e4dccd02d5d8a54ca794aaba2130db4feb809c1f5", + "0xa01451ee51efc5ef58d07e5d373b68187ee3a042553670da8a4dc613adf3ed61", + "0xa181feb7b518f4e06794c678eace3633c6b1d7222736e9d059e75ca3023b95a0", + "0xa629b978cb416fdeac008d532329429114c70e49909d97bede0f794b376eafe8", + "0xaca6bf6562b4cbbd909e6f9310c23c9517deca84e82d22dfa781c3dd980bbc95", + "0xb12dd88f42ce5db0ba12181deae915d795de5a1e4dfe87deb44a51c8dd8ced7a", + "0xc3647488b7f826d5e2602102964e93859bab9374389c1cca8799f91c2b8b1589", + "0xcc36edb95e82c14b7175ae99e58c3a27b43fb1ba7d7f1454fbda1ce66e0e5a8f", + "0xcf326c0a4f56e81beb81e1ee93cda5bd5bc5e88fa4b730a1909679b2ffb3f0d3", + "0xd3260d5e56e16920f270b3f92a40782447e360ea000aba2af08f0d1f8ad6b5f0", + "0xd43afda73e2bb89e67d8049618176ba09456438f9fcea5f8a3e91f8a1b17ecd8", + "0xd8fa8491b91a220af49eb0b54e1d5de725ca40cad8ecca989f27a2f713402490", + "0xdde2baa8f84257d47c8051b5abd214afb850211d7ee74a99c21698e8bd66f81d", + "0xe0ebce954f5f7a4f32e3fa49fa1b76bc1e56008535860b3fe78387db50f95dbd", + "0xe360ccacf592e9a2d80c7314d882d2adb850db51fd18572a6baf11a85b233e5d", + "0xe5395355afde6c5624ce706e91738cb766a8324c86ea933f38c3f8efbba38507", + "0xe8bcfc0181e426b9dfcad3785fb4db1a0d0a2b1fa40c99a36b5fe988d2a2f561", + "0xed9ffc59b7e841e0de23ac1b72c4f04a784e2fef9c46f93eed0afdd14f8d047c", + "0xeed5eebe436d3b4dedb5d25eff6275c5212fb408ab6e2d1756fd9c56b2af892d", + "0xf69faa3aa3015380b78c11aae2ee8eed497bb5ee2555e686b53e375ab90fe8cd", + "0xfe1d0d9ef3118023510cdf338ca59ae1d3e88e1ca98a3e1904d61a8620a1ad98" ], "events": [ { - "txDigest": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "txDigest": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "eventSeq": "0" }, { - "txDigest": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "txDigest": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "eventSeq": "1" } ] @@ -296,14 +343,14 @@ snapshot_kind: text "storageRebate": "0", "nonRefundableStorageFee": "0" }, - "transactionDigest": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "transactionDigest": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "created": [ { "owner": "Immutable", "reference": { "objectId": "0x0000000000000000000000000000000000000000000000000000000000000001", "version": 1, - "digest": "4JE3kcoZSKseaSsSdgQveyB6GHU2GF3oBpg5pJ39ZSFG" + "digest": "7XoN6TGQbADiyEaVmrD6gmXJDJkX21MxGMc4pYCo9mKN" } }, { @@ -311,7 +358,7 @@ snapshot_kind: text "reference": { "objectId": "0x0000000000000000000000000000000000000000000000000000000000000002", "version": 1, - "digest": "8zNipc5CUAJYs6ak77VrFXPxQyY5vwtkUmyZz8w2j5Fq" + "digest": "5DVdPqNcu7yg8VSoQy9GwmoUprvHyK87jxnbRoac1r1S" } }, { @@ -319,7 +366,7 @@ snapshot_kind: text "reference": { "objectId": "0x0000000000000000000000000000000000000000000000000000000000000003", "version": 1, - "digest": "GCLhS6D6SeU7JstsXGPEF2PTY9rGQXNLo3A6j162jdFi" + "digest": "B7r86UhqxCjrBYVNGnSf7QBNX7EWWm7kLHZ5ht1MLAre" } }, { @@ -331,7 +378,7 @@ snapshot_kind: text "reference": { "objectId": "0x0000000000000000000000000000000000000000000000000000000000000005", "version": 1, - "digest": "73woKiMAUkS1ejdzSwyD1WLDCxsPVYURbwpMBa64Tu4h" + "digest": "8CWv4f5Nov5aRXTQa2EJk7zsNhfKVbX1fEG8VP6Wsa6d" } }, { @@ -343,7 +390,7 @@ snapshot_kind: text "reference": { "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006", "version": 1, - "digest": "2iNGKB1PQafgW1o6Y3ZSkUwhxJrNbbEK4PfrqW4zxokW" + "digest": "DjXTupBThwgJcFY9YDL2Xan9bwTTA3BYrW72Dgh1AMJA" } }, { @@ -355,7 +402,7 @@ snapshot_kind: text "reference": { "objectId": "0x0000000000000000000000000000000000000000000000000000000000000008", "version": 1, - "digest": "4ZVAMTUCrpGjd97gLUnqTSvk2gqJvr7FnGopRvQkVnzn" + "digest": "aCZvLjShGf5G1AEq3jb9c3y3jxi8NhX17kFUxKwt1q1" } }, { @@ -363,7 +410,7 @@ snapshot_kind: text "reference": { "objectId": "0x000000000000000000000000000000000000000000000000000000000000000b", "version": 1, - "digest": "81neBedYgjyePBFEUdm3PPC3K6BLGjwuyyFXxaDFKbAT" + "digest": "7rF3B3o4ZHxju9pxz2eGmYhigdg5MBx4WLkyYcBaMMs9" } }, { @@ -375,7 +422,7 @@ snapshot_kind: text "reference": { "objectId": "0x0000000000000000000000000000000000000000000000000000000000000403", "version": 1, - "digest": "E7zwAronHAhg8gRcCNJrzffEcMCqyGwTRvXzk6tZYTzG" + "digest": "57nJzNa4jJBPDpbVVKcntb8rEZLhwhAsLAH7o6r6YLAb" } }, { @@ -383,55 +430,57 @@ snapshot_kind: text "reference": { "objectId": "0x000000000000000000000000000000000000000000000000000000000000107a", "version": 1, - "digest": "BvAgaA1pE6cMYg7tNZv7sdafwnYCgxk9DPseprtGCXw5" + "digest": "5Ad5TaF7cAZwf8U3rTD19oxAEfrhptBrSg9qGfYf36nY" } }, { "owner": { - "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" + "AddressOwner": "0x4b2a0b010344ffda7202ecd5f76b742b78516cfcdb208e3314d65a4157654c4b" }, "reference": { - "objectId": "0x018673f8b9c2eee4dd923fb6fcb3eb77d0e33d15921ac59f1c57ea7dfe4c3f40", + "objectId": "0x00d74df673e00106b1a45136cf8cfae1ca792c3de53232e06d09fbf5d4f60b66", "version": 1, - "digest": "AkRRb1Y6sXYHYunTUhbhqZoeTF2KdJ9E2YJh8zncRof3" + "digest": "57LAitmwQMZgioGaRVybfVmZ2Yc57HrJ2Hkm7iGmX5aD" } }, { "owner": { - "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" + "ObjectOwner": "0x1d3c44ed95179381aec577194b10aaaccddc14ceedf533b9b6b4eef5535476e0" }, "reference": { - "objectId": "0x08e1bd72a9f239c8e99a3ee8f1f4141b48ba063ecc0ebff878152e2b481b94bc", + "objectId": "0x0214b29e560e3fa6b37836ed7167db0da40a1823cf8b01f0690e1b3bfb4ebdc5", "version": 1, - "digest": "FszgvFokRH5rBBNoLrTxKWBGnCAdiRqXpWYixmwBvwpf" + "digest": "3w6HwgnTmaGDCnAciokuEpZHj2NjFWv6i9KiCHqH7Nct" } }, { "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" }, "reference": { - "objectId": "0x163b3f079eb959dc96768c65497ef5c3b48106439a306324c484a8d28e0ba50f", + "objectId": "0x04942308c8384041a5af2c13c807418d069d3a6e53519dadd1236f0344385a14", "version": 1, - "digest": "2ueUhUo7CYjPNknnKCgASKC7u1ifGVYa9N2GpqNEFzoE" + "digest": "811mkHeY9LoDN16a3CSnr22AZK8R2rJa9DbDwuvDp9kd" } }, { "owner": { - "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" + "ObjectOwner": "0xee64ad330164aaa798846df2f2df3525410779fb120765a1c5fb1f931bed784b" }, "reference": { - "objectId": "0x16d23fb8f64faebeea28ecdd43d96cb60ed1c5a297347d61a0c3fa4fff08944e", + "objectId": "0x137cb52b1bbef8e93857fd3dc67f7f70f2aabc1d7d6eb4afb28e7dea87b9ccf1", "version": 1, - "digest": "ApwvoSkL1WC5UcJWSbzGuNJHn9F5ZPuALucnMNP63sCF" + "digest": "9fG99ZbX8SPLLkLnRcah82PyLY3BSbgbLD7HKD6XntZ4" } }, { - "owner": "Immutable", + "owner": { + "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" + }, "reference": { - "objectId": "0x1a1f82376293f736136384ae03744241eb257a82f25eb223c7ef02e67442d6df", + "objectId": "0x2a74fa6e7b6f90225cb36fcdc3e416d1d3d9e209ab14aafff3afd2c3587c9aec", "version": 1, - "digest": "CJY1zNjevKH6Kya6aWr3Ri1HQsgeZFCf9qR4HqH72Fnt" + "digest": "E37WvCF8d2asqAJH7MtR9rnyiWeHqjgsQqL4gbjAwgLk" } }, { @@ -439,349 +488,347 @@ snapshot_kind: text "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, "reference": { - "objectId": "0x1d8f7a031fcca49d212b5bf2b57704913f7c6ca423357a01dda70a150e8a35b0", + "objectId": "0x2ad996aa647ab628cf294b4d98b24c9debb351e72b4a72ee3425b7d9a41d08a8", "version": 1, - "digest": "7yn1SCAHPQVAmJANbtPKjkZyzpN675SHdNBNwdFfXGbZ" + "digest": "F5fPj6gyhcWnNMJTnxis1goTvTNUXYr69zJudZaqMt2t" } }, { - "owner": { - "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" - }, + "owner": "Immutable", "reference": { - "objectId": "0x1f3119f496e7c38af65bc0f29ee79354de5f554d03d0aa433bee015e280e97b4", + "objectId": "0x30f537424026a4259959d4c28f4b474558ba881bb517267f9dac6e7bc7518a5d", "version": 1, - "digest": "59iXLqERWshXAXJqsVuwRRmoxW4AXLv5jnH3cPxRwAXw" + "digest": "CF2vkHV4X8YVrhgVKRafUDX7HmSbxSkvmwFYFPkEE4PM" } }, { "owner": { - "AddressOwner": "0x4b2a0b010344ffda7202ecd5f76b742b78516cfcdb208e3314d65a4157654c4b" + "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" }, "reference": { - "objectId": "0x2438ca49fb81fc37f74d890207c3a922b27de14b474525b4fa111de094e5194c", + "objectId": "0x3ad5e2039f28a1d146d5f7e2094b7e55f1cc35f34a53aa207250d51e76febbb4", "version": 1, - "digest": "A5e18Gy41Bxq2McoH7FbiYJFfU1yx26XRgvDk31KbRTz" + "digest": "2B9M7nEmFp1jcPM72pd7qXNNenQZwdp5dGu4xoykGeXZ" } }, { "owner": { - "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" + "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" }, "reference": { - "objectId": "0x303fac6452e9b844d960dcd60c84efbbd28b017774787c58705b67af946d7076", + "objectId": "0x3e14d7d3f210d79f29a18955f4e98676ebb40e51119ddd6d26a8add99daceb95", "version": 1, - "digest": "D582bFMq1ftKpRhrcFeRLhEJUbfrRZZLA6Ymgs87S6cC" + "digest": "A6ZSdzLj5Bvv27zaQoFm5rUkS91sK8nJKfntqKbHepUb" } }, { "owner": { - "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" + "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" }, "reference": { - "objectId": "0x3238c6a409ed6951125aaea3334cf632e053e0d09507e8a53d4b4b5923b896d0", + "objectId": "0x3e5742903bb62d61adea88aa26bad2fad57984e3eefc58a2f1810b82228e5117", "version": 1, - "digest": "GZiR6Qj8jF3vb8Eq3AF3zrCrqGcHpKPFv3MYRCn4RLsT" + "digest": "3MVJSV5RKkXLxsTdHqPQERjnmAQAoxkkiRv1Q6G8zHaU" } }, { "owner": { - "ObjectOwner": "0xce3d02f2a570935f50158318f1f0f8706fb80873afce7bb914625c1082225399" + "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" }, "reference": { - "objectId": "0x3873a7b96acdc98bfa6db49a096f8e704caa6dc7cca29aecff52abe11442dc3f", + "objectId": "0x42cfd74b065c48da45fe6048796ce9cdd3a380c182e7d89573fabc229e3ce4ab", "version": 1, - "digest": "DmLPuMUMQHtu4hRNpXbcjqtRKWrJqPLUDnZw84GmgaUZ" + "digest": "5AzKkrWAReMDgNF2bbiveSDDWvJpQzSX7xHRHNJu9Phy" } }, { "owner": { - "ObjectOwner": "0xce3d02f2a570935f50158318f1f0f8706fb80873afce7bb914625c1082225399" + "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, "reference": { - "objectId": "0x3e5b52bc91e54ac367f5987785c7b0a68869a4be2eb0a74f7bee2172e0a70dbc", + "objectId": "0x4728ee263c6a7de9fcd0d4d58db500e0ceed99977f44ca323e9a521970efd085", "version": 1, - "digest": "ARd1kECfyCcc3TUTnFZrdYRAGX6xn9G3ZKNtQKNDEA8R" + "digest": "781mLWh1jZYNUxtypVJ4XWvHvvga91AZyRfrtXSG53RZ" } }, { "owner": { - "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, "reference": { - "objectId": "0x3fb0323b083da0415032b289cb6e610388de91f9666a67c02df8ddd9edb00f4c", + "objectId": "0x495af1962cebf47d1eb0cdabb02508114dc8a05c8bb4e6c18b8e81af78c8c4b5", "version": 1, - "digest": "EidyXR5ajBRafVgkEA1cm598AdyK66F2NBub16VyE9aB" + "digest": "A7cf1SRMJYAqceQb78geXHujpHQuiqEggZnWu24enHu1" } }, { "owner": { - "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" + "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" }, "reference": { - "objectId": "0x4451b2f6d468c331dafa10f4b3fbf057b89f684553bf9298d0c4f8e61df2fa95", + "objectId": "0x608863c1d4738cb9829f9bd7c5b3ab15123b6e6eab762dedcfacc23ec23d37c9", "version": 1, - "digest": "33vUxz6x2MsvDWTQWpFpjWQbPbbZhUxPyn3uwSDfAVQx" + "digest": "6NnLvzoYdm9qBrrsgCj3x2vtrQeMceUt1QuBSvxvgXq5" } }, { "owner": { - "ObjectOwner": "0xce3d02f2a570935f50158318f1f0f8706fb80873afce7bb914625c1082225399" + "ObjectOwner": "0xaca630a6c6d4a9e7a7b033174b3952dfd7c2edeea9fa3a356e97d1a5bc31dae0" }, "reference": { - "objectId": "0x4547fa20f95dcc6e221d18eaf933f993ee8f46f98eef1705853a71f9c917c185", + "objectId": "0x660e677bad9d848d1f131d14faef42025eedf0f0e14ede894760e0ebb51a80da", "version": 1, - "digest": "J3kRd8hXaaV2mFKES9k7X2NnjxDCGcFAUoXCqsY2reZJ" + "digest": "EJiD9QzGf9afkBrdYyCfsg9f7Cx64oSLDTVMuvxc2jb2" } }, { "owner": { - "ObjectOwner": "0xbc4cf4a6e17ba874f668896d13e8dda92bab7a8870b3118d26fd67501028c2f3" + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, "reference": { - "objectId": "0x49315560aecdcf0beba3cfccb2d04f29f5d95b440cb0b6dadec64349b81083d6", + "objectId": "0x6689ff8b1b4ce68bde6f39ebd1031e0339a4036a66b7d0a85c366ac0e6817748", "version": 1, - "digest": "BRyi5NozgWp2Aji5hM8p83M8VgyR3PYg7G27MiYR2B9z" + "digest": "GYs13Dvcx4XAj76Q4fYfXEgFTyUvVfZYorzvFv8KBRrc" } }, { "owner": { - "ObjectOwner": "0x672bba3ef273000a1627a5f128022e261e36a85db6c508b917aa3139a2e9720d" + "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, "reference": { - "objectId": "0x497d698dce0d808d05cb3543b2decd461eb67a0a832acf7e3d822ff61663acb4", + "objectId": "0x69cd03a3cc6b2e4a1eae6bef4892f642d8f87ed3d83b758cc5242034bd36f565", "version": 1, - "digest": "242fQBuczzCLdXuMZ7FZwR9m86DacJxUTC5xuUW62DSG" + "digest": "FSfz1Dtc26vvg9ASRGoVHGg1WVbVqLcBtvrcYtTt6bLe" } }, { "owner": { - "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" + "ObjectOwner": "0x0000000000000000000000000000000000000000000000000000000000000005" }, "reference": { - "objectId": "0x4a4a868c023e670163f57e2467cccdaedef147daf5170fc9b0ce7caa48284a76", + "objectId": "0x6af2a2b7ca60bf76174adfd3e9c4957f8e937759603182f9b46c7f6c5f19c6d2", "version": 1, - "digest": "AWztWHzVjwd5rYXr7ork1gYC54JqtGpwHNdFA9i6gA16" + "digest": "Er8zLC9VrCrgZZcnhjLkA73mZ3J63rxiboYV6EsqmhN2" } }, { "owner": { - "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" + "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" }, "reference": { - "objectId": "0x4df66b7aab12f518bfba67b0081cadb8a321870b171a98d2aceafb6804e3b003", + "objectId": "0x6b2a75a39565fe93f6f2694e79274205ec65dac6aecff0a38b3c3947e2c9e561", "version": 1, - "digest": "EPxkpuZZYcjDJq9AzNLMPM8vsY1URjow7nmDuxQQ1QCb" + "digest": "Hy3XSG83B625ywGh161TYQ2VqBJzKxFccgp1fL3Zjbob" } }, { "owner": { - "ObjectOwner": "0xce3d02f2a570935f50158318f1f0f8706fb80873afce7bb914625c1082225399" + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" }, "reference": { - "objectId": "0x50948c5a6a706b267a6b2c2a4a2043d28ba11c5e022198f58be4182d65987a2d", + "objectId": "0x82054bc6567488b4924203907f0bc62f3f789e1f5edc901798c5a58042dfa1a8", "version": 1, - "digest": "9SGZtrm6U2rsCqiaFoVQEUSreYstnrCRg6f2EzwKGHq" + "digest": "DRYTDtLfuoxayHMXVqxuuWvv4DJnjgZQvoZebdCoGszX" } }, { "owner": { - "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" + "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, "reference": { - "objectId": "0x58efd4d54b74b390e2d3bbe785ec5df555c366b1a6eb616fb07c44d6c3f67c8c", + "objectId": "0x8a23c86abe72190400e37fd3affc876000ad1302712cbdaf76077f7d541b6400", "version": 1, - "digest": "FbrF4mnrw5oXKX1trYT2NoENq7CaSGVZfXj5XitjSqhH" + "digest": "2fqjooDKXPoqAFBjzh6cGr53zuTfngNLuHzJoPoR7uvk" } }, { "owner": { - "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" }, "reference": { - "objectId": "0x5b0e7d31f9c3a421f94dae3511983a2be67e04a7071171da2380f82be103239f", + "objectId": "0x9045719b475148ea5e0547b2a0dd8f8aaa19a658deac6bfca7a184d1dfa13d87", "version": 1, - "digest": "6s1xQf5HR8HMLNaR1QxPcfV4Ys8AL94UUg7cRpD6r4WD" + "digest": "9puPcXBGsDq9hTfkFMUHpmruAkuqsqQmBt6b2ChxRU2f" } }, { "owner": { - "ObjectOwner": "0x1dd0079cb68a9c0dc5cbbb0c9c5d831bb56ed88c4a12c647f1352832092d11dc" + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, "reference": { - "objectId": "0x5c995a223cf5e88e2d19935481d2d06b2e55977cb3615ad6784cc360a42d6501", + "objectId": "0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1", "version": 1, - "digest": "2ih9uvSzKBSv9YhrNZdMokhPcZgZ8gTt48TyUToB6JgX" + "digest": "5B8YV4P7Q93phJVPgm8MVZzsoXdSxFnKLAjAkMnLYcQb" } }, { "owner": { - "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + "ObjectOwner": "0xaca630a6c6d4a9e7a7b033174b3952dfd7c2edeea9fa3a356e97d1a5bc31dae0" }, "reference": { - "objectId": "0x5ee269cea868091ea1c5da5f15581c2f7b1708413b3bdda3e4c9528f2b3a5bb9", + "objectId": "0x9254a40663ad7e72d73dd1f04b1eca4e0486cc9f54cdd9a7c3d4e479a8131aa0", "version": 1, - "digest": "7mvhi6RxxMnPohJzMnCYoLHBTLUcRtwFtBXe1ZoanE6D" + "digest": "Du8gWCJQvqcsNBEpSYTDSB2aaRyVEG8h7niCPhKQtZFf" } }, { "owner": { - "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" + "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, "reference": { - "objectId": "0x61f2f500cb861d8d92affc84519c4c0a6b794058b58607768c8e38ab275de0eb", + "objectId": "0x939337494e5c4fe00e78f120459bf108367938719f717e32c845ab83e762f22c", "version": 1, - "digest": "AvgJes9PZYnWwM9KZmEiBZamurEgezPZUBB2gVJzvEgb" + "digest": "5RBuu4Mz4xV3bQAdU8DQnXLppZtpjGToNcoVujUfpxwG" } }, { "owner": { - "ObjectOwner": "0x0000000000000000000000000000000000000000000000000000000000000005" + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, "reference": { - "objectId": "0x6af2a2b7ca60bf76174adfd3e9c4957f8e937759603182f9b46c7f6c5f19c6d2", + "objectId": "0x94b18ab08b2ddd60e7db0756a605bd31589136eb861b76f49ff3b5ae688f65bc", "version": 1, - "digest": "36ayTWhEK1Ez85fRT6j93sMbQtxo3V55FDsJSnWXTFe5" + "digest": "DXGesd5mWPPaLtwza28GDfumr9NqswcfpbcHp2LaL287" } }, { "owner": { - "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" + "ObjectOwner": "0xaca630a6c6d4a9e7a7b033174b3952dfd7c2edeea9fa3a356e97d1a5bc31dae0" }, "reference": { - "objectId": "0x6b517df3c5888ce924d7871e550989f835335c726a43a224ce3df6b6dfa53666", + "objectId": "0x98c27dcdc3cb082f2ae47756648c92ee054721273663cf0ad25d7f2d4fd20128", "version": 1, - "digest": "ARFnQexwF3Q6CDzCgnQfH1v8gY9YAfpXLq4K89FU9koJ" + "digest": "h6NdgxuL5GUffJJjUicoXB1yDDv3qytM1PJFXQQvxdi" } }, { "owner": { - "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, "reference": { - "objectId": "0x759bb64d0a576b00a8aae6d439da4a72ef7d8797282c90211bab2bc723cd48e5", + "objectId": "0x9bafea6cfb0a89e0eee6e66ec0d598848067196ed07857012e00e609e8f3ca17", "version": 1, - "digest": "7cuKDvum6Rx2utLqquqYZGr6K3S5xbA2fq88cqs8qjZd" + "digest": "3yh2VHtBQACirSUeoFC6YGUimULgQEAeXVHQYzC8423e" } }, { "owner": { - "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" + "ObjectOwner": "0x7a85e205f86b500a8597a0e3258cfd36cb5e39c04580f5598e501dc31aa55979" }, "reference": { - "objectId": "0x76472cb3b720491fb9a66db21befaed5fbc8528976bc6fb2bc3c5deeef9d114c", + "objectId": "0x9df5ecf6c7c2ed3f31b6ff471aaea04af7d331647c34ab319c8eef45dd043620", "version": 1, - "digest": "zQeqLseHTy2tGhRk4gwvQGoCtUkRd4LqGjKuuvW2Xh1" + "digest": "Fnr1EGFNzyCZgEjLJAYYzHfWrxdLdD1epz2ToST4bTQY" } }, { "owner": { - "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, "reference": { - "objectId": "0x7c9f819b470ae3ac98b6e44eeea9b461d66a38b22a3d2f61ce62c69f68d0c71a", + "objectId": "0x9ee19bb4564baa0449b5160e4dccd02d5d8a54ca794aaba2130db4feb809c1f5", "version": 1, - "digest": "EsxwZdo265ZPbYh99YeTGunSWrMj8dXyNBw2H1E9D9eL" + "digest": "zoUU8mDtdVPRCqfRKWmd5VpMNfgBHd4jVjq4gu8i9vn" } }, { "owner": { - "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" + "ObjectOwner": "0xaca630a6c6d4a9e7a7b033174b3952dfd7c2edeea9fa3a356e97d1a5bc31dae0" }, "reference": { - "objectId": "0x81c7cfd9c7fa81f57a59f14739ee82157fc6a04d48a1b0a6e1187a8898042299", + "objectId": "0xa01451ee51efc5ef58d07e5d373b68187ee3a042553670da8a4dc613adf3ed61", "version": 1, - "digest": "8ESph921vnJz6UaENHxg2ytx68MtT4UoxNpPgWTT99a5" + "digest": "BUizCaTGo3YEdsuDzodmKs9njztBmrQbpNA5DXiLcXZt" } }, { "owner": { - "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" + "ObjectOwner": "0x337b119cf80fabd2c403926df427294e0d1c5444a317a42b1c9dbdbc07375f1b" }, "reference": { - "objectId": "0x85a7aabfb1d8ef14efd87338a58efcdbfaf0cab5e5fc247ccd1080dcdd3d2d7f", + "objectId": "0xa181feb7b518f4e06794c678eace3633c6b1d7222736e9d059e75ca3023b95a0", "version": 1, - "digest": "277zG7Ypo7ruZu1WMxXDUoApdKnUYLBvrws1KkqzHuFm" + "digest": "CYWkB4L1JxphwGcDyzdFZQfNcfbhV33jWxNkRxgcquSH" } }, { "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" }, "reference": { - "objectId": "0x8cd9aca3790437fc6b1b7258c5fefb2e95ffb54134aae1fd04ba757d4286055d", + "objectId": "0xa629b978cb416fdeac008d532329429114c70e49909d97bede0f794b376eafe8", "version": 1, - "digest": "AEXYy8VGP4NX8xpTs7LHiuZYfzTwFiRypmiQrZy9waNY" + "digest": "6Mtsb7P5EAb696MW6fHanVamZe9zSR8kbnAf7kfZd4n8" } }, { "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, "reference": { - "objectId": "0x8fd46357d5ae46f9ee8de7d9b6dfc9da4e497c70dbd2ce5c2fc124658798d5c9", + "objectId": "0xaca6bf6562b4cbbd909e6f9310c23c9517deca84e82d22dfa781c3dd980bbc95", "version": 1, - "digest": "3xUtUi7VT3NzhFGUGsAJbSaimrdSTb2ujoesjNukQjS8" + "digest": "Akr7cJiBjxTYvEm5GttimcB7NVBu8qEU3JEMggT2NkVS" } }, { "owner": { - "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, "reference": { - "objectId": "0xa010e1486bfd2f1d7c57a3b2c2edd369e64e8fddc1ca17667314317273cb491d", + "objectId": "0xb12dd88f42ce5db0ba12181deae915d795de5a1e4dfe87deb44a51c8dd8ced7a", "version": 1, - "digest": "DAFo7bkSkk2XRZv88Nb2V9jatTse1TYTqgMmVxVKGRtF" + "digest": "AqgNX8aLoZyCfmq3N3F3kaMTRWpQCQnZ8uzxJvfckbFM" } }, { "owner": { - "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" + "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" }, "reference": { - "objectId": "0xa6e659b1120b373f598d1f6c3214d73abda596eb913857e1fa471ab4420f2e27", + "objectId": "0xc3647488b7f826d5e2602102964e93859bab9374389c1cca8799f91c2b8b1589", "version": 1, - "digest": "E3tr1QPatiEWCjxUNrbKfyRgkNq8tBeiTKFKGyA7g9vk" + "digest": "65ZbHUaDjGRnqwUVGHiSVeHV1Koxpcmk2pPKv9Uj9wYR" } }, { "owner": { - "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" + "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" }, "reference": { - "objectId": "0xb271c22281276193f817eeab5291b79f5f37698a21323fbafe014e1774c3d22e", + "objectId": "0xcc36edb95e82c14b7175ae99e58c3a27b43fb1ba7d7f1454fbda1ce66e0e5a8f", "version": 1, - "digest": "GjnVg1dHinKTEkLLZYLedhgmLkmNddYhYM9pUZrUDrzc" + "digest": "4X4Mmi3CynwtZsuonDK26HvV4SyQ4d4SykRdn1KLu22a" } }, { "owner": { - "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" }, "reference": { - "objectId": "0xb279227ad10111e5d870facc26d048a05bc440859e718cde0e3bbf257765544c", + "objectId": "0xcf326c0a4f56e81beb81e1ee93cda5bd5bc5e88fa4b730a1909679b2ffb3f0d3", "version": 1, - "digest": "BZaGDacxqx5MFLFm6F3UeBVpHG5hZykqSHFoD1o5F5kq" + "digest": "DcBPndnKeykAEYA7cmTz7PW7u2pg46nUB7JDEG2gEaQj" } }, { "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" }, "reference": { - "objectId": "0xbb43894417b1b4a4cee286133d85cae9706c217d150daf4d12168bc5e9147d78", + "objectId": "0xd3260d5e56e16920f270b3f92a40782447e360ea000aba2af08f0d1f8ad6b5f0", "version": 1, - "digest": "E9CuCY7GpGsGHb6cjKdSrrWc3xmRN3wjp4FqjZ22DmoT" + "digest": "2W8RQHXqNzdkhKPUCmawicG7iHgvR6BXYMCiktweVruJ" } }, { "owner": { - "ObjectOwner": "0xc2bda3bfc534a80abf077c5be16ba9a0832c206ab8e230605d6839b7d87c2038" + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" }, "reference": { - "objectId": "0xc066a3793934a82847a3cee2a0dd84832ba1ba24b71ac0602b1a60cbbe553d17", + "objectId": "0xd43afda73e2bb89e67d8049618176ba09456438f9fcea5f8a3e91f8a1b17ecd8", "version": 1, - "digest": "DWvQzrbs9HQQ411fc6f9QtEFerRLv956sUyRzY1M9HPJ" + "digest": "8PrSccVLMdHmUji4HbGeUvxh8WTHDnzqk75tWz67Tf8d" } }, { @@ -789,19 +836,19 @@ snapshot_kind: text "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" }, "reference": { - "objectId": "0xc79de55a6454ac8e927645a08e4e9b3ce8e814ce9fc25eb7a347a91fc2228f4f", + "objectId": "0xd8fa8491b91a220af49eb0b54e1d5de725ca40cad8ecca989f27a2f713402490", "version": 1, - "digest": "6avmJYgcDx3Ha6XXNTRCZeHACaaERgC4AkNDCE1a8TGA" + "digest": "F7NGNkMwvuPkKEuvnYgErENvp1HqQfWkMNySiKssSy6b" } }, { "owner": { - "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" + "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" }, "reference": { - "objectId": "0xc7ee80d93a34f12ff58b0ceaf16c4e06ee6ceeb547b031b0d3eab1a8a6ca873f", + "objectId": "0xdde2baa8f84257d47c8051b5abd214afb850211d7ee74a99c21698e8bd66f81d", "version": 1, - "digest": "F3PmgDERQbRNn44B6on5QPxNVXCLUn18L33fNgv1cazu" + "digest": "3ue34riJ3GWEcmegp2kzVEpnHgWzamPaCZTx7kpjc5ZL" } }, { @@ -809,29 +856,29 @@ snapshot_kind: text "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, "reference": { - "objectId": "0xd1e455eb2c367047a03756eb830bf0d2357b0c69905f0d4f3a648cc81498905e", + "objectId": "0xe0ebce954f5f7a4f32e3fa49fa1b76bc1e56008535860b3fe78387db50f95dbd", "version": 1, - "digest": "C2SeaJLLw3x6ShuvPfND8mXCAvLgNz293iTtu5L1SWCW" + "digest": "kNSMhUBQszVBjveLRYdxX9JEUiLzdV3vCzz9ikaYL1n" } }, { "owner": { - "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" + "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, "reference": { - "objectId": "0xd26171201bf3e074f1d1c694ea6ebc5d95d75b75583c393055efbca3eeb9c629", + "objectId": "0xe360ccacf592e9a2d80c7314d882d2adb850db51fd18572a6baf11a85b233e5d", "version": 1, - "digest": "AVs21Q7q1cFThjfKGkzGSSaKsQCjWo3NtDcBDPCCKM76" + "digest": "A2VPHWvMEQHPWw1m5oX6vVZcAwsmkLyCvotCx4MrNjzG" } }, { "owner": { - "ObjectOwner": "0x8ee7b25e9189b59bcedfe3525114b47d4602ce383d1ddbbc3e49d95134fd8286" + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" }, "reference": { - "objectId": "0xd6090aa14b28b0e907434cd8f8469b24769a80ebd722f18df48fe59e5fd47c0f", + "objectId": "0xe5395355afde6c5624ce706e91738cb766a8324c86ea933f38c3f8efbba38507", "version": 1, - "digest": "4yuGdRvF2jHEwP7yfNE56bWPNY9v4b4wDzDngue7sHxb" + "digest": "DLCXf4UxpB6CMKQ7tSvdpMLZzAj5z2Qfuox7qHNefKqR" } }, { @@ -839,47 +886,47 @@ snapshot_kind: text "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" }, "reference": { - "objectId": "0xe47935c2607151b36e2e7d6971418157d7a8997ab2771ae779f5b6a2230334c9", + "objectId": "0xe8bcfc0181e426b9dfcad3785fb4db1a0d0a2b1fa40c99a36b5fe988d2a2f561", "version": 1, - "digest": "GTBQbGkLPeC4hbkBB6QtzPC7P1zngzPdh2tAyPUnS8c" + "digest": "2eMPqCumhC9U4G5rJmSr1ZKxftCS264Z8csh9zBbe4aQ" } }, { "owner": { - "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" + "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" }, "reference": { - "objectId": "0xe54599f1bb4b687498caf1e5212c6eaf0b088dcc8159d283ecf2c6287ede48dc", + "objectId": "0xed9ffc59b7e841e0de23ac1b72c4f04a784e2fef9c46f93eed0afdd14f8d047c", "version": 1, - "digest": "Cs9n9dTaq4n8KjEDib829cYFgPQRsyubTQRzX1upqE6x" + "digest": "69xyHdtHM8S6Voaqv4VHX5p7kxehGDVEAosn236u3EYH" } }, { - "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" - }, + "owner": "Immutable", "reference": { - "objectId": "0xefd24c24d3784edec255308f6fc3619f65902ebd122f5a34b105727994326ce1", + "objectId": "0xeed5eebe436d3b4dedb5d25eff6275c5212fb408ab6e2d1756fd9c56b2af892d", "version": 1, - "digest": "FNNTstnHpGPZCv6PNrv7dcodbfXkA4xiz71ZUtiVKYcY" + "digest": "HyUxFE4PT5azA17c56oxTLkT81weUpxi5ZkoCxefEbyC" } }, { "owner": { - "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" + "ObjectOwner": "0x723bc96ed7aa917e131832dd0c60b9b54bb74f5d6c7c5edb89251db0b2881d58" }, "reference": { - "objectId": "0xfbf79fe230691c666820739add167373a61a7faa858231f42feb961ec8fffcf5", + "objectId": "0xf69faa3aa3015380b78c11aae2ee8eed497bb5ee2555e686b53e375ab90fe8cd", "version": 1, - "digest": "2FRzkPVb45cxXoE68vu5QcfM9T7WypPFu199wSHeXUWj" + "digest": "6e9719u3ETKKnmysHMKE5kJoPcV6qGc8gLkoecxbibcm" } }, { - "owner": "Immutable", + "owner": { + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + }, "reference": { - "objectId": "0xffc04eb3011a2933dd0fbfff34cbd6759dbf999f7e2ac372e08d577c56a459cb", + "objectId": "0xfe1d0d9ef3118023510cdf338ca59ae1d3e88e1ca98a3e1904d61a8620a1ad98", "version": 1, - "digest": "FVzi8BDkddrv8mDQE6DG5JxD7THHn1PKLqzSj5sovdAc" + "digest": "7iwW12UgvrywkA79tKwWSZ5AviKqcgKytqz9dWwZLDoh" } } ], @@ -893,12 +940,12 @@ snapshot_kind: text "digest": "11111111111111111111111111111111" } }, - "eventsDigest": "HvJEc58b44AonQBEvAqrxrG5GmZUBc284MWDDNCirwNT" + "eventsDigest": "652jxdjvsGZDUHS3GoacF4VaCqx614uQNBBNuHSFZsWL" }, "events": [ { "id": { - "txDigest": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "txDigest": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "eventSeq": "0" }, "packageId": "0x000000000000000000000000000000000000000000000000000000000000107a", @@ -906,13 +953,13 @@ snapshot_kind: text "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "type": "0x2::display::DisplayCreated<0x107a::nft::Nft>", "parsedJson": { - "id": "0xffc04eb3011a2933dd0fbfff34cbd6759dbf999f7e2ac372e08d577c56a459cb" + "id": "0xeed5eebe436d3b4dedb5d25eff6275c5212fb408ab6e2d1756fd9c56b2af892d" }, - "bcs": "JDM3MXfy5KRcXneqNjftj86a4vwAgXavnUbYjyJPxxsc" + "bcs": "H5KEdze24AHvBWWazyGUYQRmhE3zFDzH85xKo3PGYFYg" }, { "id": { - "txDigest": "5zibcom3dMckjyN16ygFwr5XNa9Exi1MmY3BQs984x1N", + "txDigest": "E5Zp4QQ84PQEceSw4JRi4VTScSAQweKSgdwp9XH4aVPd", "eventSeq": "1" }, "packageId": "0x000000000000000000000000000000000000000000000000000000000000107a", @@ -956,10 +1003,10 @@ snapshot_kind: text } ] }, - "id": "0xffc04eb3011a2933dd0fbfff34cbd6759dbf999f7e2ac372e08d577c56a459cb", + "id": "0xeed5eebe436d3b4dedb5d25eff6275c5212fb408ab6e2d1756fd9c56b2af892d", "version": 1 }, - "bcs": "32c8gaMxAbF5n7wL32Kdpi5pBQy2PGi7t3onffny9jqe2gaDRgL1VDGq8Qdf7iMRM4tBvAxYsetLqrYETRwRew9c7x9XTW9aw4K9dDM1KZfHC5jj2QMRwbEHALCq9vYszTEk8A5F3x1rR1edmQyMMY7mKPRCGoRymgHdDSN6gcN6F7HBf3ya4ybxTpZax5RE4tawq5kbjSJnGNe54KAsAtqMpnJsSJ1PP5Z91r3CkDB3gKAeDah1WxySJMBgdpoJbzcniQJBQQ4ppTBFoe1FBhES9fcsbpKhMNxqyMi19TdopYSpDJHgfhPs1urgbMuNTJR6fNjbDsfY1a1DgeW7QAxpcQENY4gY4qFsWX86W8bC8K4kJYuxEEfcGCrJ16Rj2svNVE9gEeDKeRFfCH6gc9Je35Gd4chRcCjkgDoKcqzyB2vDiUrtCCbRGBrJa77x3y4TmucBM5v7LVs8eha6hEAEYQG5CDQdxTmTR6k" + "bcs": "2tpynDmB6yz6PBwHubkQHtuoUCpW2Ko34tEUKCUYU4hDbWkG2JELHHSrtenbXE8EcA9CHviCfpsdnvYbUpg58KW4EJBsb4tzfqEgPzNRmtWxM29JmEfgYygghy3oRsnjudFohMUgoKCCZbka4UHMvpVqKvEz9CKM9KrSvZFMEz6n2vyCUnuD6WZ7nKuTWmZD9SDKC7sx7VNCcE3iPnfN7gTJELP3UT7zNxWF1HnitZPdVdvgQwFmNsxpX881CXboKPSij3yRiLZauDknV6TDvus5QxB9sP7SioVbYSWMZoTdha1FAqRHWBT9r5buiKVj7WxKZiAm3ijfsVS47GbQ1xV3GSTvngJ4yUTp5TxFcdxRU18LsuvkTdMNwo9rwzyn1aKM3rHxCJ3fQgzBPVZ1Q5ENmHHfHpCxwprrYsktWCKM5RHErbTNog6PyB9D1wchgkNqaGvhFNmRP6bittnM33wBgoJ9MhE9CcADVeU" } ], "objectChanges": [ @@ -967,7 +1014,7 @@ snapshot_kind: text "type": "published", "packageId": "0x0000000000000000000000000000000000000000000000000000000000000001", "version": "1", - "digest": "4JE3kcoZSKseaSsSdgQveyB6GHU2GF3oBpg5pJ39ZSFG", + "digest": "7XoN6TGQbADiyEaVmrD6gmXJDJkX21MxGMc4pYCo9mKN", "modules": [ "address", "ascii", @@ -993,7 +1040,7 @@ snapshot_kind: text "type": "published", "packageId": "0x0000000000000000000000000000000000000000000000000000000000000002", "version": "1", - "digest": "8zNipc5CUAJYs6ak77VrFXPxQyY5vwtkUmyZz8w2j5Fq", + "digest": "5DVdPqNcu7yg8VSoQy9GwmoUprvHyK87jxnbRoac1r1S", "modules": [ "address", "authenticator_state", @@ -1056,7 +1103,7 @@ snapshot_kind: text "type": "published", "packageId": "0x0000000000000000000000000000000000000000000000000000000000000003", "version": "1", - "digest": "GCLhS6D6SeU7JstsXGPEF2PTY9rGQXNLo3A6j162jdFi", + "digest": "B7r86UhqxCjrBYVNGnSf7QBNX7EWWm7kLHZ5ht1MLAre", "modules": [ "genesis", "iota_system", @@ -1082,7 +1129,7 @@ snapshot_kind: text "objectType": "0x3::iota_system::IotaSystemState", "objectId": "0x0000000000000000000000000000000000000000000000000000000000000005", "version": "1", - "digest": "73woKiMAUkS1ejdzSwyD1WLDCxsPVYURbwpMBa64Tu4h" + "digest": "8CWv4f5Nov5aRXTQa2EJk7zsNhfKVbX1fEG8VP6Wsa6d" }, { "type": "created", @@ -1095,7 +1142,7 @@ snapshot_kind: text "objectType": "0x2::clock::Clock", "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006", "version": "1", - "digest": "2iNGKB1PQafgW1o6Y3ZSkUwhxJrNbbEK4PfrqW4zxokW" + "digest": "DjXTupBThwgJcFY9YDL2Xan9bwTTA3BYrW72Dgh1AMJA" }, { "type": "created", @@ -1108,13 +1155,13 @@ snapshot_kind: text "objectType": "0x2::random::Random", "objectId": "0x0000000000000000000000000000000000000000000000000000000000000008", "version": "1", - "digest": "4ZVAMTUCrpGjd97gLUnqTSvk2gqJvr7FnGopRvQkVnzn" + "digest": "aCZvLjShGf5G1AEq3jb9c3y3jxi8NhX17kFUxKwt1q1" }, { "type": "published", "packageId": "0x000000000000000000000000000000000000000000000000000000000000000b", "version": "1", - "digest": "81neBedYgjyePBFEUdm3PPC3K6BLGjwuyyFXxaDFKbAT", + "digest": "7rF3B3o4ZHxju9pxz2eGmYhigdg5MBx4WLkyYcBaMMs9", "modules": [ "bridge", "chain_ids", @@ -1137,13 +1184,13 @@ snapshot_kind: text "objectType": "0x2::deny_list::DenyList", "objectId": "0x0000000000000000000000000000000000000000000000000000000000000403", "version": "1", - "digest": "E7zwAronHAhg8gRcCNJrzffEcMCqyGwTRvXzk6tZYTzG" + "digest": "57nJzNa4jJBPDpbVVKcntb8rEZLhwhAsLAH7o6r6YLAb" }, { "type": "published", "packageId": "0x000000000000000000000000000000000000000000000000000000000000107a", "version": "1", - "digest": "BvAgaA1pE6cMYg7tNZv7sdafwnYCgxk9DPseprtGCXw5", + "digest": "5Ad5TaF7cAZwf8U3rTD19oxAEfrhptBrSg9qGfYf36nY", "modules": [ "address_unlock_condition", "alias", @@ -1163,65 +1210,56 @@ snapshot_kind: text "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" + "AddressOwner": "0x4b2a0b010344ffda7202ecd5f76b742b78516cfcdb208e3314d65a4157654c4b" }, - "objectType": "0x3::validator_cap::UnverifiedValidatorOperationCap", - "objectId": "0x018673f8b9c2eee4dd923fb6fcb3eb77d0e33d15921ac59f1c57ea7dfe4c3f40", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x00d74df673e00106b1a45136cf8cfae1ca792c3de53232e06d09fbf5d4f60b66", "version": "1", - "digest": "AkRRb1Y6sXYHYunTUhbhqZoeTF2KdJ9E2YJh8zncRof3" + "digest": "57LAitmwQMZgioGaRVybfVmZ2Yc57HrJ2Hkm7iGmX5aD" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" + "ObjectOwner": "0x1d3c44ed95179381aec577194b10aaaccddc14ceedf533b9b6b4eef5535476e0" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x08e1bd72a9f239c8e99a3ee8f1f4141b48ba063ecc0ebff878152e2b481b94bc", + "objectType": "0x2::dynamic_field::Field", + "objectId": "0x0214b29e560e3fa6b37836ed7167db0da40a1823cf8b01f0690e1b3bfb4ebdc5", "version": "1", - "digest": "FszgvFokRH5rBBNoLrTxKWBGnCAdiRqXpWYixmwBvwpf" + "digest": "3w6HwgnTmaGDCnAciokuEpZHj2NjFWv6i9KiCHqH7Nct" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x163b3f079eb959dc96768c65497ef5c3b48106439a306324c484a8d28e0ba50f", + "objectId": "0x04942308c8384041a5af2c13c807418d069d3a6e53519dadd1236f0344385a14", "version": "1", - "digest": "2ueUhUo7CYjPNknnKCgASKC7u1ifGVYa9N2GpqNEFzoE" + "digest": "811mkHeY9LoDN16a3CSnr22AZK8R2rJa9DbDwuvDp9kd" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" + "ObjectOwner": "0xee64ad330164aaa798846df2f2df3525410779fb120765a1c5fb1f931bed784b" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x16d23fb8f64faebeea28ecdd43d96cb60ed1c5a297347d61a0c3fa4fff08944e", - "version": "1", - "digest": "ApwvoSkL1WC5UcJWSbzGuNJHn9F5ZPuALucnMNP63sCF" - }, - { - "type": "created", - "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", - "owner": "Immutable", - "objectType": "0x2::coin::CoinMetadata<0x2::iota::IOTA>", - "objectId": "0x1a1f82376293f736136384ae03744241eb257a82f25eb223c7ef02e67442d6df", + "objectType": "0x2::dynamic_field::Field", + "objectId": "0x137cb52b1bbef8e93857fd3dc67f7f70f2aabc1d7d6eb4afb28e7dea87b9ccf1", "version": "1", - "digest": "CJY1zNjevKH6Kya6aWr3Ri1HQsgeZFCf9qR4HqH72Fnt" + "digest": "9fG99ZbX8SPLLkLnRcah82PyLY3BSbgbLD7HKD6XntZ4" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" + "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x1d8f7a031fcca49d212b5bf2b57704913f7c6ca423357a01dda70a150e8a35b0", + "objectId": "0x2a74fa6e7b6f90225cb36fcdc3e416d1d3d9e209ab14aafff3afd2c3587c9aec", "version": "1", - "digest": "7yn1SCAHPQVAmJANbtPKjkZyzpN675SHdNBNwdFfXGbZ" + "digest": "E37WvCF8d2asqAJH7MtR9rnyiWeHqjgsQqL4gbjAwgLk" }, { "type": "created", @@ -1230,185 +1268,183 @@ snapshot_kind: text "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x1f3119f496e7c38af65bc0f29ee79354de5f554d03d0aa433bee015e280e97b4", + "objectId": "0x2ad996aa647ab628cf294b4d98b24c9debb351e72b4a72ee3425b7d9a41d08a8", "version": "1", - "digest": "59iXLqERWshXAXJqsVuwRRmoxW4AXLv5jnH3cPxRwAXw" + "digest": "F5fPj6gyhcWnNMJTnxis1goTvTNUXYr69zJudZaqMt2t" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", - "owner": { - "AddressOwner": "0x4b2a0b010344ffda7202ecd5f76b742b78516cfcdb208e3314d65a4157654c4b" - }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x2438ca49fb81fc37f74d890207c3a922b27de14b474525b4fa111de094e5194c", + "owner": "Immutable", + "objectType": "0x2::coin::CoinMetadata<0x2::iota::IOTA>", + "objectId": "0x30f537424026a4259959d4c28f4b474558ba881bb517267f9dac6e7bc7518a5d", "version": "1", - "digest": "A5e18Gy41Bxq2McoH7FbiYJFfU1yx26XRgvDk31KbRTz" + "digest": "CF2vkHV4X8YVrhgVKRafUDX7HmSbxSkvmwFYFPkEE4PM" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" + "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" }, "objectType": "0x3::staking_pool::StakedIota", - "objectId": "0x303fac6452e9b844d960dcd60c84efbbd28b017774787c58705b67af946d7076", + "objectId": "0x3ad5e2039f28a1d146d5f7e2094b7e55f1cc35f34a53aa207250d51e76febbb4", "version": "1", - "digest": "D582bFMq1ftKpRhrcFeRLhEJUbfrRZZLA6Ymgs87S6cC" + "digest": "2B9M7nEmFp1jcPM72pd7qXNNenQZwdp5dGu4xoykGeXZ" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" + "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" }, - "objectType": "0x3::staking_pool::StakedIota", - "objectId": "0x3238c6a409ed6951125aaea3334cf632e053e0d09507e8a53d4b4b5923b896d0", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x3e14d7d3f210d79f29a18955f4e98676ebb40e51119ddd6d26a8add99daceb95", "version": "1", - "digest": "GZiR6Qj8jF3vb8Eq3AF3zrCrqGcHpKPFv3MYRCn4RLsT" + "digest": "A6ZSdzLj5Bvv27zaQoFm5rUkS91sK8nJKfntqKbHepUb" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0xce3d02f2a570935f50158318f1f0f8706fb80873afce7bb914625c1082225399" + "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" }, - "objectType": "0x2::dynamic_field::Field<0x2::object::ID, address>", - "objectId": "0x3873a7b96acdc98bfa6db49a096f8e704caa6dc7cca29aecff52abe11442dc3f", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x3e5742903bb62d61adea88aa26bad2fad57984e3eefc58a2f1810b82228e5117", "version": "1", - "digest": "DmLPuMUMQHtu4hRNpXbcjqtRKWrJqPLUDnZw84GmgaUZ" + "digest": "3MVJSV5RKkXLxsTdHqPQERjnmAQAoxkkiRv1Q6G8zHaU" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0xce3d02f2a570935f50158318f1f0f8706fb80873afce7bb914625c1082225399" + "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" }, - "objectType": "0x2::dynamic_field::Field<0x2::object::ID, address>", - "objectId": "0x3e5b52bc91e54ac367f5987785c7b0a68869a4be2eb0a74f7bee2172e0a70dbc", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x42cfd74b065c48da45fe6048796ce9cdd3a380c182e7d89573fabc229e3ce4ab", "version": "1", - "digest": "ARd1kECfyCcc3TUTnFZrdYRAGX6xn9G3ZKNtQKNDEA8R" + "digest": "5AzKkrWAReMDgNF2bbiveSDDWvJpQzSX7xHRHNJu9Phy" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" + "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x3fb0323b083da0415032b289cb6e610388de91f9666a67c02df8ddd9edb00f4c", + "objectId": "0x4728ee263c6a7de9fcd0d4d58db500e0ceed99977f44ca323e9a521970efd085", "version": "1", - "digest": "EidyXR5ajBRafVgkEA1cm598AdyK66F2NBub16VyE9aB" + "digest": "781mLWh1jZYNUxtypVJ4XWvHvvga91AZyRfrtXSG53RZ" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, - "objectType": "0x3::staking_pool::StakedIota", - "objectId": "0x4451b2f6d468c331dafa10f4b3fbf057b89f684553bf9298d0c4f8e61df2fa95", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x495af1962cebf47d1eb0cdabb02508114dc8a05c8bb4e6c18b8e81af78c8c4b5", "version": "1", - "digest": "33vUxz6x2MsvDWTQWpFpjWQbPbbZhUxPyn3uwSDfAVQx" + "digest": "A7cf1SRMJYAqceQb78geXHujpHQuiqEggZnWu24enHu1" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0xce3d02f2a570935f50158318f1f0f8706fb80873afce7bb914625c1082225399" + "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" }, - "objectType": "0x2::dynamic_field::Field<0x2::object::ID, address>", - "objectId": "0x4547fa20f95dcc6e221d18eaf933f993ee8f46f98eef1705853a71f9c917c185", + "objectType": "0x3::staking_pool::StakedIota", + "objectId": "0x608863c1d4738cb9829f9bd7c5b3ab15123b6e6eab762dedcfacc23ec23d37c9", "version": "1", - "digest": "J3kRd8hXaaV2mFKES9k7X2NnjxDCGcFAUoXCqsY2reZJ" + "digest": "6NnLvzoYdm9qBrrsgCj3x2vtrQeMceUt1QuBSvxvgXq5" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0xbc4cf4a6e17ba874f668896d13e8dda92bab7a8870b3118d26fd67501028c2f3" + "ObjectOwner": "0xaca630a6c6d4a9e7a7b033174b3952dfd7c2edeea9fa3a356e97d1a5bc31dae0" }, - "objectType": "0x2::dynamic_field::Field", - "objectId": "0x49315560aecdcf0beba3cfccb2d04f29f5d95b440cb0b6dadec64349b81083d6", + "objectType": "0x2::dynamic_field::Field<0x2::object::ID, address>", + "objectId": "0x660e677bad9d848d1f131d14faef42025eedf0f0e14ede894760e0ebb51a80da", "version": "1", - "digest": "BRyi5NozgWp2Aji5hM8p83M8VgyR3PYg7G27MiYR2B9z" + "digest": "EJiD9QzGf9afkBrdYyCfsg9f7Cx64oSLDTVMuvxc2jb2" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0x672bba3ef273000a1627a5f128022e261e36a85db6c508b917aa3139a2e9720d" + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, - "objectType": "0x2::dynamic_field::Field", - "objectId": "0x497d698dce0d808d05cb3543b2decd461eb67a0a832acf7e3d822ff61663acb4", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x6689ff8b1b4ce68bde6f39ebd1031e0339a4036a66b7d0a85c366ac0e6817748", "version": "1", - "digest": "242fQBuczzCLdXuMZ7FZwR9m86DacJxUTC5xuUW62DSG" + "digest": "GYs13Dvcx4XAj76Q4fYfXEgFTyUvVfZYorzvFv8KBRrc" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" + "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, - "objectType": "0x3::validator_cap::UnverifiedValidatorOperationCap", - "objectId": "0x4a4a868c023e670163f57e2467cccdaedef147daf5170fc9b0ce7caa48284a76", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x69cd03a3cc6b2e4a1eae6bef4892f642d8f87ed3d83b758cc5242034bd36f565", "version": "1", - "digest": "AWztWHzVjwd5rYXr7ork1gYC54JqtGpwHNdFA9i6gA16" + "digest": "FSfz1Dtc26vvg9ASRGoVHGg1WVbVqLcBtvrcYtTt6bLe" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" + "ObjectOwner": "0x0000000000000000000000000000000000000000000000000000000000000005" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x4df66b7aab12f518bfba67b0081cadb8a321870b171a98d2aceafb6804e3b003", + "objectType": "0x2::dynamic_field::Field", + "objectId": "0x6af2a2b7ca60bf76174adfd3e9c4957f8e937759603182f9b46c7f6c5f19c6d2", "version": "1", - "digest": "EPxkpuZZYcjDJq9AzNLMPM8vsY1URjow7nmDuxQQ1QCb" + "digest": "Er8zLC9VrCrgZZcnhjLkA73mZ3J63rxiboYV6EsqmhN2" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0xce3d02f2a570935f50158318f1f0f8706fb80873afce7bb914625c1082225399" + "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" }, - "objectType": "0x2::dynamic_field::Field<0x2::object::ID, address>", - "objectId": "0x50948c5a6a706b267a6b2c2a4a2043d28ba11c5e022198f58be4182d65987a2d", + "objectType": "0x3::staking_pool::StakedIota", + "objectId": "0x6b2a75a39565fe93f6f2694e79274205ec65dac6aecff0a38b3c3947e2c9e561", "version": "1", - "digest": "9SGZtrm6U2rsCqiaFoVQEUSreYstnrCRg6f2EzwKGHq" + "digest": "Hy3XSG83B625ywGh161TYQ2VqBJzKxFccgp1fL3Zjbob" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" }, - "objectType": "0x3::validator_cap::UnverifiedValidatorOperationCap", - "objectId": "0x58efd4d54b74b390e2d3bbe785ec5df555c366b1a6eb616fb07c44d6c3f67c8c", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x82054bc6567488b4924203907f0bc62f3f789e1f5edc901798c5a58042dfa1a8", "version": "1", - "digest": "FbrF4mnrw5oXKX1trYT2NoENq7CaSGVZfXj5XitjSqhH" + "digest": "DRYTDtLfuoxayHMXVqxuuWvv4DJnjgZQvoZebdCoGszX" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x5b0e7d31f9c3a421f94dae3511983a2be67e04a7071171da2380f82be103239f", + "objectId": "0x8a23c86abe72190400e37fd3affc876000ad1302712cbdaf76077f7d541b6400", "version": "1", - "digest": "6s1xQf5HR8HMLNaR1QxPcfV4Ys8AL94UUg7cRpD6r4WD" + "digest": "2fqjooDKXPoqAFBjzh6cGr53zuTfngNLuHzJoPoR7uvk" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0x1dd0079cb68a9c0dc5cbbb0c9c5d831bb56ed88c4a12c647f1352832092d11dc" + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" }, - "objectType": "0x2::dynamic_field::Field", - "objectId": "0x5c995a223cf5e88e2d19935481d2d06b2e55977cb3615ad6784cc360a42d6501", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x9045719b475148ea5e0547b2a0dd8f8aaa19a658deac6bfca7a184d1dfa13d87", "version": "1", - "digest": "2ih9uvSzKBSv9YhrNZdMokhPcZgZ8gTt48TyUToB6JgX" + "digest": "9puPcXBGsDq9hTfkFMUHpmruAkuqsqQmBt6b2ChxRU2f" }, { "type": "created", @@ -1417,53 +1453,53 @@ snapshot_kind: text "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x5ee269cea868091ea1c5da5f15581c2f7b1708413b3bdda3e4c9528f2b3a5bb9", + "objectId": "0x9135cb3b5aca99a1555b742bd11ddc45fba33343be182bdc161be69da2c41be1", "version": "1", - "digest": "7mvhi6RxxMnPohJzMnCYoLHBTLUcRtwFtBXe1ZoanE6D" + "digest": "5B8YV4P7Q93phJVPgm8MVZzsoXdSxFnKLAjAkMnLYcQb" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" + "ObjectOwner": "0xaca630a6c6d4a9e7a7b033174b3952dfd7c2edeea9fa3a356e97d1a5bc31dae0" }, - "objectType": "0x3::validator_cap::UnverifiedValidatorOperationCap", - "objectId": "0x61f2f500cb861d8d92affc84519c4c0a6b794058b58607768c8e38ab275de0eb", + "objectType": "0x2::dynamic_field::Field<0x2::object::ID, address>", + "objectId": "0x9254a40663ad7e72d73dd1f04b1eca4e0486cc9f54cdd9a7c3d4e479a8131aa0", "version": "1", - "digest": "AvgJes9PZYnWwM9KZmEiBZamurEgezPZUBB2gVJzvEgb" + "digest": "Du8gWCJQvqcsNBEpSYTDSB2aaRyVEG8h7niCPhKQtZFf" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0x0000000000000000000000000000000000000000000000000000000000000005" + "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, - "objectType": "0x2::dynamic_field::Field", - "objectId": "0x6af2a2b7ca60bf76174adfd3e9c4957f8e937759603182f9b46c7f6c5f19c6d2", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0x939337494e5c4fe00e78f120459bf108367938719f717e32c845ab83e762f22c", "version": "1", - "digest": "36ayTWhEK1Ez85fRT6j93sMbQtxo3V55FDsJSnWXTFe5" + "digest": "5RBuu4Mz4xV3bQAdU8DQnXLppZtpjGToNcoVujUfpxwG" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x6b517df3c5888ce924d7871e550989f835335c726a43a224ce3df6b6dfa53666", + "objectId": "0x94b18ab08b2ddd60e7db0756a605bd31589136eb861b76f49ff3b5ae688f65bc", "version": "1", - "digest": "ARFnQexwF3Q6CDzCgnQfH1v8gY9YAfpXLq4K89FU9koJ" + "digest": "DXGesd5mWPPaLtwza28GDfumr9NqswcfpbcHp2LaL287" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + "ObjectOwner": "0xaca630a6c6d4a9e7a7b033174b3952dfd7c2edeea9fa3a356e97d1a5bc31dae0" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x759bb64d0a576b00a8aae6d439da4a72ef7d8797282c90211bab2bc723cd48e5", + "objectType": "0x2::dynamic_field::Field<0x2::object::ID, address>", + "objectId": "0x98c27dcdc3cb082f2ae47756648c92ee054721273663cf0ad25d7f2d4fd20128", "version": "1", - "digest": "7cuKDvum6Rx2utLqquqYZGr6K3S5xbA2fq88cqs8qjZd" + "digest": "h6NdgxuL5GUffJJjUicoXB1yDDv3qytM1PJFXQQvxdi" }, { "type": "created", @@ -1472,141 +1508,141 @@ snapshot_kind: text "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x76472cb3b720491fb9a66db21befaed5fbc8528976bc6fb2bc3c5deeef9d114c", + "objectId": "0x9bafea6cfb0a89e0eee6e66ec0d598848067196ed07857012e00e609e8f3ca17", "version": "1", - "digest": "zQeqLseHTy2tGhRk4gwvQGoCtUkRd4LqGjKuuvW2Xh1" + "digest": "3yh2VHtBQACirSUeoFC6YGUimULgQEAeXVHQYzC8423e" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" + "ObjectOwner": "0x7a85e205f86b500a8597a0e3258cfd36cb5e39c04580f5598e501dc31aa55979" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x7c9f819b470ae3ac98b6e44eeea9b461d66a38b22a3d2f61ce62c69f68d0c71a", + "objectType": "0x2::dynamic_field::Field", + "objectId": "0x9df5ecf6c7c2ed3f31b6ff471aaea04af7d331647c34ab319c8eef45dd043620", "version": "1", - "digest": "EsxwZdo265ZPbYh99YeTGunSWrMj8dXyNBw2H1E9D9eL" + "digest": "Fnr1EGFNzyCZgEjLJAYYzHfWrxdLdD1epz2ToST4bTQY" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" + "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x81c7cfd9c7fa81f57a59f14739ee82157fc6a04d48a1b0a6e1187a8898042299", + "objectId": "0x9ee19bb4564baa0449b5160e4dccd02d5d8a54ca794aaba2130db4feb809c1f5", "version": "1", - "digest": "8ESph921vnJz6UaENHxg2ytx68MtT4UoxNpPgWTT99a5" + "digest": "zoUU8mDtdVPRCqfRKWmd5VpMNfgBHd4jVjq4gu8i9vn" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" + "ObjectOwner": "0xaca630a6c6d4a9e7a7b033174b3952dfd7c2edeea9fa3a356e97d1a5bc31dae0" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x85a7aabfb1d8ef14efd87338a58efcdbfaf0cab5e5fc247ccd1080dcdd3d2d7f", + "objectType": "0x2::dynamic_field::Field<0x2::object::ID, address>", + "objectId": "0xa01451ee51efc5ef58d07e5d373b68187ee3a042553670da8a4dc613adf3ed61", "version": "1", - "digest": "277zG7Ypo7ruZu1WMxXDUoApdKnUYLBvrws1KkqzHuFm" + "digest": "BUizCaTGo3YEdsuDzodmKs9njztBmrQbpNA5DXiLcXZt" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + "ObjectOwner": "0x337b119cf80fabd2c403926df427294e0d1c5444a317a42b1c9dbdbc07375f1b" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x8cd9aca3790437fc6b1b7258c5fefb2e95ffb54134aae1fd04ba757d4286055d", + "objectType": "0x2::dynamic_field::Field", + "objectId": "0xa181feb7b518f4e06794c678eace3633c6b1d7222736e9d059e75ca3023b95a0", "version": "1", - "digest": "AEXYy8VGP4NX8xpTs7LHiuZYfzTwFiRypmiQrZy9waNY" + "digest": "CYWkB4L1JxphwGcDyzdFZQfNcfbhV33jWxNkRxgcquSH" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + "AddressOwner": "0x7a9730f69d7c9eed4058b7e3ad9019adffdf63a94ef73cd2fb0217f3b9eb6eb1" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0x8fd46357d5ae46f9ee8de7d9b6dfc9da4e497c70dbd2ce5c2fc124658798d5c9", + "objectType": "0x3::validator_cap::UnverifiedValidatorOperationCap", + "objectId": "0xa629b978cb416fdeac008d532329429114c70e49909d97bede0f794b376eafe8", "version": "1", - "digest": "3xUtUi7VT3NzhFGUGsAJbSaimrdSTb2ujoesjNukQjS8" + "digest": "6Mtsb7P5EAb696MW6fHanVamZe9zSR8kbnAf7kfZd4n8" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xa010e1486bfd2f1d7c57a3b2c2edd369e64e8fddc1ca17667314317273cb491d", + "objectId": "0xaca6bf6562b4cbbd909e6f9310c23c9517deca84e82d22dfa781c3dd980bbc95", "version": "1", - "digest": "DAFo7bkSkk2XRZv88Nb2V9jatTse1TYTqgMmVxVKGRtF" + "digest": "Akr7cJiBjxTYvEm5GttimcB7NVBu8qEU3JEMggT2NkVS" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" + "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xa6e659b1120b373f598d1f6c3214d73abda596eb913857e1fa471ab4420f2e27", + "objectId": "0xb12dd88f42ce5db0ba12181deae915d795de5a1e4dfe87deb44a51c8dd8ced7a", "version": "1", - "digest": "E3tr1QPatiEWCjxUNrbKfyRgkNq8tBeiTKFKGyA7g9vk" + "digest": "AqgNX8aLoZyCfmq3N3F3kaMTRWpQCQnZ8uzxJvfckbFM" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" + "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xb271c22281276193f817eeab5291b79f5f37698a21323fbafe014e1774c3d22e", + "objectType": "0x3::validator_cap::UnverifiedValidatorOperationCap", + "objectId": "0xc3647488b7f826d5e2602102964e93859bab9374389c1cca8799f91c2b8b1589", "version": "1", - "digest": "GjnVg1dHinKTEkLLZYLedhgmLkmNddYhYM9pUZrUDrzc" + "digest": "65ZbHUaDjGRnqwUVGHiSVeHV1Koxpcmk2pPKv9Uj9wYR" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x2868fed4dbeb23d2ace3ee3ad6e39061423c5692a2b289b39c643c0baf2d8d85" + "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xb279227ad10111e5d870facc26d048a05bc440859e718cde0e3bbf257765544c", + "objectId": "0xcc36edb95e82c14b7175ae99e58c3a27b43fb1ba7d7f1454fbda1ce66e0e5a8f", "version": "1", - "digest": "BZaGDacxqx5MFLFm6F3UeBVpHG5hZykqSHFoD1o5F5kq" + "digest": "4X4Mmi3CynwtZsuonDK26HvV4SyQ4d4SykRdn1KLu22a" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + "AddressOwner": "0x0b37c2167535af8a5729c44690f7be89eb248a6eb3cda5fd37ee1029949f0c29" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xbb43894417b1b4a4cee286133d85cae9706c217d150daf4d12168bc5e9147d78", + "objectId": "0xcf326c0a4f56e81beb81e1ee93cda5bd5bc5e88fa4b730a1909679b2ffb3f0d3", "version": "1", - "digest": "E9CuCY7GpGsGHb6cjKdSrrWc3xmRN3wjp4FqjZ22DmoT" + "digest": "DcBPndnKeykAEYA7cmTz7PW7u2pg46nUB7JDEG2gEaQj" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0xc2bda3bfc534a80abf077c5be16ba9a0832c206ab8e230605d6839b7d87c2038" + "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" }, - "objectType": "0x2::dynamic_field::Field", - "objectId": "0xc066a3793934a82847a3cee2a0dd84832ba1ba24b71ac0602b1a60cbbe553d17", + "objectType": "0x3::validator_cap::UnverifiedValidatorOperationCap", + "objectId": "0xd3260d5e56e16920f270b3f92a40782447e360ea000aba2af08f0d1f8ad6b5f0", "version": "1", - "digest": "DWvQzrbs9HQQ411fc6f9QtEFerRLv956sUyRzY1M9HPJ" + "digest": "2W8RQHXqNzdkhKPUCmawicG7iHgvR6BXYMCiktweVruJ" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xc79de55a6454ac8e927645a08e4e9b3ce8e814ce9fc25eb7a347a91fc2228f4f", + "objectId": "0xd43afda73e2bb89e67d8049618176ba09456438f9fcea5f8a3e91f8a1b17ecd8", "version": "1", - "digest": "6avmJYgcDx3Ha6XXNTRCZeHACaaERgC4AkNDCE1a8TGA" + "digest": "8PrSccVLMdHmUji4HbGeUvxh8WTHDnzqk75tWz67Tf8d" }, { "type": "created", @@ -1615,95 +1651,106 @@ snapshot_kind: text "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xc7ee80d93a34f12ff58b0ceaf16c4e06ee6ceeb547b031b0d3eab1a8a6ca873f", + "objectId": "0xd8fa8491b91a220af49eb0b54e1d5de725ca40cad8ecca989f27a2f713402490", "version": "1", - "digest": "F3PmgDERQbRNn44B6on5QPxNVXCLUn18L33fNgv1cazu" + "digest": "F7NGNkMwvuPkKEuvnYgErENvp1HqQfWkMNySiKssSy6b" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" + "AddressOwner": "0x20227cfbc6699debf187d2d7bca3d253cd50f87c165516d3dc53a246a9af7182" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xd1e455eb2c367047a03756eb830bf0d2357b0c69905f0d4f3a648cc81498905e", + "objectType": "0x3::staking_pool::StakedIota", + "objectId": "0xdde2baa8f84257d47c8051b5abd214afb850211d7ee74a99c21698e8bd66f81d", "version": "1", - "digest": "C2SeaJLLw3x6ShuvPfND8mXCAvLgNz293iTtu5L1SWCW" + "digest": "3ue34riJ3GWEcmegp2kzVEpnHgWzamPaCZTx7kpjc5ZL" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" + "AddressOwner": "0x2f1c55f14bcab32b91bccbf9909aa2818d644d4a1f6401c37f97383e4d8275ca" }, - "objectType": "0x3::staking_pool::StakedIota", - "objectId": "0xd26171201bf3e074f1d1c694ea6ebc5d95d75b75583c393055efbca3eeb9c629", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0xe0ebce954f5f7a4f32e3fa49fa1b76bc1e56008535860b3fe78387db50f95dbd", "version": "1", - "digest": "AVs21Q7q1cFThjfKGkzGSSaKsQCjWo3NtDcBDPCCKM76" + "digest": "kNSMhUBQszVBjveLRYdxX9JEUiLzdV3vCzz9ikaYL1n" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "ObjectOwner": "0x8ee7b25e9189b59bcedfe3525114b47d4602ce383d1ddbbc3e49d95134fd8286" + "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" }, - "objectType": "0x2::dynamic_field::Field", - "objectId": "0xd6090aa14b28b0e907434cd8f8469b24769a80ebd722f18df48fe59e5fd47c0f", + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0xe360ccacf592e9a2d80c7314d882d2adb850db51fd18572a6baf11a85b233e5d", "version": "1", - "digest": "4yuGdRvF2jHEwP7yfNE56bWPNY9v4b4wDzDngue7sHxb" + "digest": "A2VPHWvMEQHPWw1m5oX6vVZcAwsmkLyCvotCx4MrNjzG" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xe47935c2607151b36e2e7d6971418157d7a8997ab2771ae779f5b6a2230334c9", + "objectId": "0xe5395355afde6c5624ce706e91738cb766a8324c86ea933f38c3f8efbba38507", "version": "1", - "digest": "GTBQbGkLPeC4hbkBB6QtzPC7P1zngzPdh2tAyPUnS8c" + "digest": "DLCXf4UxpB6CMKQ7tSvdpMLZzAj5z2Qfuox7qHNefKqR" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x4b578d914e64de1ca47bead61bcfa0932646e16de6063089810cfa904eb8b06f" + "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" }, "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xe54599f1bb4b687498caf1e5212c6eaf0b088dcc8159d283ecf2c6287ede48dc", + "objectId": "0xe8bcfc0181e426b9dfcad3785fb4db1a0d0a2b1fa40c99a36b5fe988d2a2f561", "version": "1", - "digest": "Cs9n9dTaq4n8KjEDib829cYFgPQRsyubTQRzX1upqE6x" + "digest": "2eMPqCumhC9U4G5rJmSr1ZKxftCS264Z8csh9zBbe4aQ" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + "AddressOwner": "0x7dbda9c2efa8255eea64cf28b64294ffed6af432f53b661d24f3807895ee828d" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xefd24c24d3784edec255308f6fc3619f65902ebd122f5a34b105727994326ce1", + "objectType": "0x3::validator_cap::UnverifiedValidatorOperationCap", + "objectId": "0xed9ffc59b7e841e0de23ac1b72c4f04a784e2fef9c46f93eed0afdd14f8d047c", "version": "1", - "digest": "FNNTstnHpGPZCv6PNrv7dcodbfXkA4xiz71ZUtiVKYcY" + "digest": "69xyHdtHM8S6Voaqv4VHX5p7kxehGDVEAosn236u3EYH" + }, + { + "type": "created", + "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", + "owner": "Immutable", + "objectType": "0x2::display::Display<0x107a::nft::Nft>", + "objectId": "0xeed5eebe436d3b4dedb5d25eff6275c5212fb408ab6e2d1756fd9c56b2af892d", + "version": "1", + "digest": "HyUxFE4PT5azA17c56oxTLkT81weUpxi5ZkoCxefEbyC" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", "owner": { - "AddressOwner": "0x44f42943b20151d6a0c3cb0f84006b3441bb3378c668a6df71fa36cb441538c8" + "ObjectOwner": "0x723bc96ed7aa917e131832dd0c60b9b54bb74f5d6c7c5edb89251db0b2881d58" }, - "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", - "objectId": "0xfbf79fe230691c666820739add167373a61a7faa858231f42feb961ec8fffcf5", + "objectType": "0x2::dynamic_field::Field", + "objectId": "0xf69faa3aa3015380b78c11aae2ee8eed497bb5ee2555e686b53e375ab90fe8cd", "version": "1", - "digest": "2FRzkPVb45cxXoE68vu5QcfM9T7WypPFu199wSHeXUWj" + "digest": "6e9719u3ETKKnmysHMKE5kJoPcV6qGc8gLkoecxbibcm" }, { "type": "created", "sender": "0x0000000000000000000000000000000000000000000000000000000000000000", - "owner": "Immutable", - "objectType": "0x2::display::Display<0x107a::nft::Nft>", - "objectId": "0xffc04eb3011a2933dd0fbfff34cbd6759dbf999f7e2ac372e08d577c56a459cb", + "owner": { + "AddressOwner": "0xb4b32db0fb2bc9170f796efb2439aeaf46fd0dc0b79af4e12d14bb87c3e9aa65" + }, + "objectType": "0x2::coin::Coin<0x2::iota::IOTA>", + "objectId": "0xfe1d0d9ef3118023510cdf338ca59ae1d3e88e1ca98a3e1904d61a8620a1ad98", "version": "1", - "digest": "FVzi8BDkddrv8mDQE6DG5JxD7THHn1PKLqzSj5sovdAc" + "digest": "7iwW12UgvrywkA79tKwWSZ5AviKqcgKytqz9dWwZLDoh" } ], "timestampMs": "1641175496000", diff --git a/crates/iota-framework-snapshot/bytecode_snapshot/2/0x0000000000000000000000000000000000000000000000000000000000000001 b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x0000000000000000000000000000000000000000000000000000000000000001 new file mode 100644 index 00000000000..6aae6016489 Binary files /dev/null and b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x0000000000000000000000000000000000000000000000000000000000000001 differ diff --git a/crates/iota-framework-snapshot/bytecode_snapshot/2/0x0000000000000000000000000000000000000000000000000000000000000002 b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x0000000000000000000000000000000000000000000000000000000000000002 new file mode 100644 index 00000000000..6e14adb5fdf Binary files /dev/null and b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x0000000000000000000000000000000000000000000000000000000000000002 differ diff --git a/crates/iota-framework-snapshot/bytecode_snapshot/2/0x0000000000000000000000000000000000000000000000000000000000000003 b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x0000000000000000000000000000000000000000000000000000000000000003 new file mode 100644 index 00000000000..ddf88e95212 Binary files /dev/null and b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x0000000000000000000000000000000000000000000000000000000000000003 differ diff --git a/crates/iota-framework-snapshot/bytecode_snapshot/2/0x000000000000000000000000000000000000000000000000000000000000000b b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x000000000000000000000000000000000000000000000000000000000000000b new file mode 100644 index 00000000000..a28b3206877 Binary files /dev/null and b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x000000000000000000000000000000000000000000000000000000000000000b differ diff --git a/crates/iota-framework-snapshot/bytecode_snapshot/2/0x000000000000000000000000000000000000000000000000000000000000107a b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x000000000000000000000000000000000000000000000000000000000000107a new file mode 100644 index 00000000000..56d912f6c89 Binary files /dev/null and b/crates/iota-framework-snapshot/bytecode_snapshot/2/0x000000000000000000000000000000000000000000000000000000000000107a differ diff --git a/crates/iota-framework-snapshot/manifest.json b/crates/iota-framework-snapshot/manifest.json index 71466febef4..261265acff2 100644 --- a/crates/iota-framework-snapshot/manifest.json +++ b/crates/iota-framework-snapshot/manifest.json @@ -8,5 +8,15 @@ "0x000000000000000000000000000000000000000000000000000000000000000b", "0x000000000000000000000000000000000000000000000000000000000000107a" ] + }, + "2": { + "git_revision": "f20be52f200b", + "package_ids": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x000000000000000000000000000000000000000000000000000000000000000b", + "0x000000000000000000000000000000000000000000000000000000000000107a" + ] } } \ No newline at end of file diff --git a/crates/iota-framework/packages/iota-system/sources/iota_system_state_inner.move b/crates/iota-framework/packages/iota-system/sources/iota_system_state_inner.move index 5e701a31961..2097871e915 100644 --- a/crates/iota-framework/packages/iota-system/sources/iota_system_state_inner.move +++ b/crates/iota-framework/packages/iota-system/sources/iota_system_state_inner.move @@ -675,6 +675,9 @@ module iota_system::iota_system_state_inner { let storage_charge_value = storage_charge.value(); let computation_charge = computation_reward.value(); + // Mints or burns tokens depending on the target reward. + // Since not all rewards are distributed in case of slashed validators, + // tokens might be minted here and burnt in the same epoch change. let (mut total_validator_rewards, minted_tokens_amount, mut burnt_tokens_amount) = match_computation_reward_to_target_reward( validator_target_reward, computation_reward, @@ -701,7 +704,7 @@ module iota_system::iota_system_state_inner { let new_total_stake = self.validators.total_stake(); let remaining_validator_rewards_amount_after_distribution = total_validator_rewards.value(); - let total_validator_rewards_distributed = total_validator_rewards_amount_before_distribution - remaining_validator_rewards_amount_after_distribution; + let total_stake_rewards_distributed = total_validator_rewards_amount_before_distribution - remaining_validator_rewards_amount_after_distribution; self.protocol_version = next_protocol_version; @@ -731,9 +734,9 @@ module iota_system::iota_system_state_inner { storage_rebate: storage_rebate_amount, storage_fund_balance: self.storage_fund.total_balance(), total_gas_fees: computation_charge, - total_stake_rewards_distributed: total_validator_rewards_distributed, + total_stake_rewards_distributed, burnt_tokens_amount, - minted_tokens_amount + minted_tokens_amount, } ); self.safe_mode = false; @@ -751,24 +754,22 @@ module iota_system::iota_system_state_inner { /// and the amount of computation fees burned in this epoch. fun match_computation_reward_to_target_reward( validator_target_reward: u64, - mut computation_reward: Balance, + mut computation_charges: Balance, iota_treasury_cap: &mut iota::iota::IotaTreasuryCap, ctx: &TxContext, ): (Balance, u64, u64) { - let mut burnt_tokens_amount = 0; - let mut minted_tokens_amount = 0; - if (computation_reward.value() < validator_target_reward) { - let tokens_to_mint = validator_target_reward - computation_reward.value(); - let new_tokens = iota_treasury_cap.mint_balance(tokens_to_mint, ctx); - minted_tokens_amount = new_tokens.value(); - computation_reward.join(new_tokens); - } else if (computation_reward.value() > validator_target_reward) { - let tokens_to_burn = computation_reward.value() - validator_target_reward; - let rewards_to_burn = computation_reward.split(tokens_to_burn); - burnt_tokens_amount = rewards_to_burn.value(); - iota_treasury_cap.burn_balance(rewards_to_burn, ctx); + let burnt_tokens_amount = computation_charges.value(); + let minted_tokens_amount = validator_target_reward; + if (burnt_tokens_amount < minted_tokens_amount) { + let actual_amount_to_mint = minted_tokens_amount - burnt_tokens_amount; + let balance_to_mint = iota_treasury_cap.mint_balance(actual_amount_to_mint, ctx); + computation_charges.join(balance_to_mint); + } else if (burnt_tokens_amount > minted_tokens_amount) { + let actual_amount_to_burn = burnt_tokens_amount - minted_tokens_amount; + let balance_to_burn = computation_charges.split(actual_amount_to_burn); + iota_treasury_cap.burn_balance(balance_to_burn, ctx); }; - (computation_reward, minted_tokens_amount, burnt_tokens_amount) + (computation_charges, minted_tokens_amount, burnt_tokens_amount) } /// Return the current epoch number. Useful for applications that need a coarse-grained concept of time, diff --git a/crates/iota-framework/packages/iota-system/sources/validator_set.move b/crates/iota-framework/packages/iota-system/sources/validator_set.move index b0579a00205..8c8215e8ba8 100644 --- a/crates/iota-framework/packages/iota-system/sources/validator_set.move +++ b/crates/iota-framework/packages/iota-system/sources/validator_set.move @@ -11,7 +11,7 @@ module iota_system::validator_set { use iota_system::staking_pool::{PoolTokenExchangeRate, StakedIota, pool_id}; use iota::priority_queue as pq; use iota::vec_map::{Self, VecMap}; - use iota::vec_set::VecSet; + use iota::vec_set::{Self, VecSet}; use iota::table::{Self, Table}; use iota::event; use iota::table_vec::{Self, TableVec}; @@ -341,28 +341,14 @@ module iota_system::validator_set { // punished. let slashed_validators = compute_slashed_validators(self, *validator_report_records); - let total_slashed_validator_voting_power = sum_voting_power_by_addresses(&self.active_validators, &slashed_validators); - - // Compute the reward adjustments of slashed validators, to be taken into - // account in adjusted reward computation. - let (total_staking_reward_adjustment, individual_staking_reward_adjustments) = - compute_reward_adjustments( - get_validator_indices(&self.active_validators, &slashed_validators), - reward_slashing_rate, - &unadjusted_staking_reward_amounts, - ); - - // Compute the adjusted amounts of stake each validator should get given the tallying rule - // reward adjustments we computed before. + // Compute the adjusted amounts of stake each validator should get according to the tallying rule. // `compute_adjusted_reward_distribution` must be called before `distribute_reward` and `adjust_stake_and_gas_price` to // make sure we are using the current epoch's stake information to compute reward distribution. let adjusted_staking_reward_amounts = compute_adjusted_reward_distribution( &self.active_validators, - total_voting_power, - total_slashed_validator_voting_power, unadjusted_staking_reward_amounts, - total_staking_reward_adjustment, - individual_staking_reward_adjustments, + get_validator_indices_set(&self.active_validators, &slashed_validators), + reward_slashing_rate, ); // Distribute the rewards before adjusting stake so that we immediately start compounding @@ -638,18 +624,17 @@ module iota_system::validator_set { option::none() } - - /// Given a vector of validator addresses, return their indices in the validator set. + /// Given a vector of validator addresses, return a set of all indices of the validators. /// Aborts if any address isn't in the given validator set. - fun get_validator_indices(validators: &vector, validator_addresses: &vector
): vector { + fun get_validator_indices_set(validators: &vector, validator_addresses: &vector
): VecSet { let length = validator_addresses.length(); let mut i = 0; - let mut res = vector[]; + let mut res = vec_set::empty(); while (i < length) { let addr = validator_addresses[i]; let index_opt = find_validator(validators, addr); assert!(index_opt.is_some(), ENotAValidator); - res.push_back(index_opt.destroy_some()); + res.insert(index_opt.destroy_some()); i = i + 1; }; res @@ -941,35 +926,6 @@ module iota_system::validator_set { } } - /// Compute both the individual reward adjustments and total reward adjustment for staking rewards. - fun compute_reward_adjustments( - mut slashed_validator_indices: vector, - reward_slashing_rate: u64, - unadjusted_staking_reward_amounts: &vector, - ): ( - u64, // sum of staking reward adjustments - VecMap, // mapping of individual validator's staking reward adjustment from index -> amount - ) { - let mut total_staking_reward_adjustment = 0; - let mut individual_staking_reward_adjustments = vec_map::empty(); - - while (!slashed_validator_indices.is_empty()) { - let validator_index = slashed_validator_indices.pop_back(); - - // Use the slashing rate to compute the amount of staking rewards slashed from this punished validator. - let unadjusted_staking_reward = unadjusted_staking_reward_amounts[validator_index]; - let staking_reward_adjustment_u128 = - unadjusted_staking_reward as u128 * (reward_slashing_rate as u128) - / BASIS_POINT_DENOMINATOR; - - // Insert into individual mapping and record into the total adjustment sum. - individual_staking_reward_adjustments.insert(validator_index, staking_reward_adjustment_u128 as u64); - total_staking_reward_adjustment = total_staking_reward_adjustment + (staking_reward_adjustment_u128 as u64); - }; - - (total_staking_reward_adjustment, individual_staking_reward_adjustments) - } - /// Process the validator report records of the epoch and return the addresses of the /// non-performant validators according to the input threshold. fun compute_slashed_validators( @@ -1023,44 +979,37 @@ module iota_system::validator_set { /// The staking rewards are shared with the stakers. fun compute_adjusted_reward_distribution( validators: &vector, - total_voting_power: u64, - total_slashed_validator_voting_power: u64, unadjusted_staking_reward_amounts: vector, - total_staking_reward_adjustment: u64, - individual_staking_reward_adjustments: VecMap, + slashed_validator_indices_set: VecSet, + reward_slashing_rate: u64, ): vector { - let total_unslashed_validator_voting_power = total_voting_power - total_slashed_validator_voting_power; let mut adjusted_staking_reward_amounts = vector[]; - + + // Loop through each validator and adjust rewards as necessary let length = validators.length(); - let mut i = 0; while (i < length) { - let validator = &validators[i]; - // Integer divisions will truncate the results. Because of this, we expect that at the end - // there will be some reward remaining in `total_reward`. - // Use u128 to avoid multiplication overflow. - let voting_power = validator.voting_power() as u128; - - // Compute adjusted staking reward. let unadjusted_staking_reward_amount = unadjusted_staking_reward_amounts[i]; - let adjusted_staking_reward_amount = - // If the validator is one of the slashed ones, then subtract the adjustment. - if (individual_staking_reward_adjustments.contains(&i)) { - let adjustment = individual_staking_reward_adjustments[&i]; - unadjusted_staking_reward_amount - adjustment - } else { - // Otherwise the slashed rewards should be distributed among the unslashed - // validators so add the corresponding adjustment. - let adjustment = total_staking_reward_adjustment as u128 * voting_power - / (total_unslashed_validator_voting_power as u128); - unadjusted_staking_reward_amount + (adjustment as u64) - }; + + // Check if the validator is slashed + let adjusted_staking_reward_amount = if (slashed_validator_indices_set.contains(&i)) { + // Use the slashing rate to compute the amount of staking rewards slashed from this punished validator. + // Use u128 to avoid multiplication overflow. + let staking_reward_adjustment_u128 = ((unadjusted_staking_reward_amount as u128) * (reward_slashing_rate as u128)) / BASIS_POINT_DENOMINATOR; + unadjusted_staking_reward_amount - (staking_reward_adjustment_u128 as u64) + } else { + // Otherwise, unadjusted staking reward amount is assigned to the unslashed validators + unadjusted_staking_reward_amount + }; + adjusted_staking_reward_amounts.push_back(adjusted_staking_reward_amount); - + + // Move to the next validator i = i + 1; }; + // The sum of the adjusted staking rewards may not be equal to the total staking reward, + // because of integer division truncation and the slashing of the rewards for the slashed validators. adjusted_staking_reward_amounts } diff --git a/crates/iota-framework/packages/iota-system/tests/rewards_distribution_tests.move b/crates/iota-framework/packages/iota-system/tests/rewards_distribution_tests.move index b8ad5e8b7f5..b57fb2e841e 100644 --- a/crates/iota-framework/packages/iota-system/tests/rewards_distribution_tests.move +++ b/crates/iota-framework/packages/iota-system/tests/rewards_distribution_tests.move @@ -47,22 +47,50 @@ module iota_system::rewards_distribution_tests { // need to advance epoch so validator's staking starts counting advance_epoch(scenario); + assert_validator_total_stake_amounts( + validator_addrs(), + vector[ + 100 * NANOS_PER_IOTA, + 200 * NANOS_PER_IOTA, + 300 * NANOS_PER_IOTA, + 400 * NANOS_PER_IOTA, + ], + scenario + ); + advance_epoch_with_reward_amounts(0, 100, scenario); + + // rewards of 100 IOTA are split evenly between the validators + // => +25 IOTA for each validator assert_validator_total_stake_amounts( validator_addrs(), - vector[125 * NANOS_PER_IOTA, 225 * NANOS_PER_IOTA, 325 * NANOS_PER_IOTA, 425 * NANOS_PER_IOTA], + vector[ + (100 + 25) * NANOS_PER_IOTA, + (200 + 25) * NANOS_PER_IOTA, + (300 + 25) * NANOS_PER_IOTA, + (400 + 25) * NANOS_PER_IOTA, + ], scenario ); stake_with(VALIDATOR_ADDR_2, VALIDATOR_ADDR_2, 720, scenario); advance_epoch(scenario); + advance_epoch_with_reward_amounts(0, 100, scenario); + // Even though validator 2 has a lot more stake now, it should not get more rewards because // the voting power is capped at 10%. + // rewards of 100 IOTA are split evenly between the validators + // => +25 IOTA for each validator assert_validator_total_stake_amounts( validator_addrs(), - vector[150 * NANOS_PER_IOTA, 970 * NANOS_PER_IOTA, 350 * NANOS_PER_IOTA, 450 * NANOS_PER_IOTA], + vector[ + (125 + 25) * NANOS_PER_IOTA, + (225 + 720 + 25) * NANOS_PER_IOTA, + (325 + 25) * NANOS_PER_IOTA, + (425 + 25) * NANOS_PER_IOTA, + ], scenario ); @@ -77,9 +105,31 @@ module iota_system::rewards_distribution_tests { // need to advance epoch so validator's staking starts counting advance_epoch(scenario); + + assert_validator_total_stake_amounts( + validator_addrs(), + vector[ + 100_000_000 * NANOS_PER_IOTA, + 200_000_000 * NANOS_PER_IOTA, + 300_000_000 * NANOS_PER_IOTA, + 400_000_000 * NANOS_PER_IOTA, + ], + scenario + ); advance_epoch_with_reward_amounts(0, 100, scenario); - assert_validator_total_stake_amounts(validator_addrs(), vector[100_000_025 * NANOS_PER_IOTA, 200_000_025 * NANOS_PER_IOTA, 300_000_025 * NANOS_PER_IOTA, 400_000_025 * NANOS_PER_IOTA], scenario); + + // rewards of 100 IOTA are split evenly between the validators + // => +25 IOTA for each validator + assert_validator_total_stake_amounts( + validator_addrs(), + vector[ + (100_000_000 + 25) * NANOS_PER_IOTA, + (200_000_000 + 25) * NANOS_PER_IOTA, + (300_000_000 + 25) * NANOS_PER_IOTA, + (400_000_000 + 25) * NANOS_PER_IOTA, + ], + scenario); scenario_val.end(); } @@ -98,6 +148,7 @@ module iota_system::rewards_distribution_tests { advance_epoch_with_target_reward_amounts(validator_target_reward, 0, computation_reward, scenario); let new_supply = total_supply(scenario); + // Since the target reward and computation reward are the same, no new tokens should // have been minted, so the supply should stay constant. assert!(prev_supply == new_supply, 0); @@ -120,6 +171,7 @@ module iota_system::rewards_distribution_tests { advance_epoch_with_target_reward_amounts(validator_target_reward, 0, computation_reward, scenario); let new_supply = total_supply(scenario); + // The difference between target reward and computation reward should have been burned. assert_eq(prev_supply - (computation_reward - validator_target_reward) * NANOS_PER_IOTA, new_supply); @@ -141,6 +193,7 @@ module iota_system::rewards_distribution_tests { advance_epoch_with_target_reward_amounts(validator_target_reward, 0, computation_reward, scenario); let new_supply = total_supply(scenario); + // The difference between target reward and computation reward should have been minted. assert_eq(prev_supply + (validator_target_reward - computation_reward) * NANOS_PER_IOTA, new_supply); @@ -153,27 +206,39 @@ module iota_system::rewards_distribution_tests { let mut scenario_val = test_scenario::begin(VALIDATOR_ADDR_1); let scenario = &mut scenario_val; + // need to advance epoch so validator's staking starts counting advance_epoch(scenario); - // V1: 100, V2: 200, V3: 300, V4: 400 - advance_epoch_with_target_reward_amounts(800, 0, 400, scenario); + assert_validator_total_stake_amounts( + validator_addrs(), + vector[ + 100 * NANOS_PER_IOTA, + 200 * NANOS_PER_IOTA, + 300 * NANOS_PER_IOTA, + 400 * NANOS_PER_IOTA, + ], + scenario + ); // The computation reward is lower than the target reward, so 400 IOTA should be minted. - // Each validator pool has 25% of the voting power and thus gets 25% of the reward (200 IOTA). + advance_epoch_with_target_reward_amounts(800, 0, 400, scenario); + + // Each validator pool has 25% of the voting power and thus gets 25% of the reward. + // => +200 IOTA for each validator assert_validator_total_stake_amounts( validator_addrs(), vector[ - (100 + 200) * NANOS_PER_IOTA, - (200 + 200) * NANOS_PER_IOTA, - (300 + 200) * NANOS_PER_IOTA, - (400 + 200) * NANOS_PER_IOTA, + (100 + 200) * NANOS_PER_IOTA, + (200 + 200) * NANOS_PER_IOTA, + (300 + 200) * NANOS_PER_IOTA, + (400 + 200) * NANOS_PER_IOTA, ], scenario ); unstake(VALIDATOR_ADDR_1, 0, scenario); - // Validator should get the entire reward of 200 plus its initially staked 100 IOTA. + // Validator 1 should get the entire reward of 200 plus its initially staked 100 IOTA. assert_eq(total_iota_balance(VALIDATOR_ADDR_1, scenario), (100+200) * NANOS_PER_IOTA); scenario_val.end(); @@ -185,27 +250,39 @@ module iota_system::rewards_distribution_tests { let mut scenario_val = test_scenario::begin(VALIDATOR_ADDR_1); let scenario = &mut scenario_val; + // need to advance epoch so validator's staking starts counting advance_epoch(scenario); - // V1: 100, V2: 200, V3: 300, V4: 400 - advance_epoch_with_target_reward_amounts(800, 0, 1000, scenario); + assert_validator_total_stake_amounts( + validator_addrs(), + vector[ + 100 * NANOS_PER_IOTA, + 200 * NANOS_PER_IOTA, + 300 * NANOS_PER_IOTA, + 400 * NANOS_PER_IOTA, + ], + scenario + ); // The computation reward is higher than the target reward, so 200 IOTA should be burned. - // Each validator pool has 25% of the voting power and thus gets 25% of the reward (200 IOTA). + advance_epoch_with_target_reward_amounts(800, 0, 1000, scenario); + + // Each validator pool has 25% of the voting power and thus gets 25% of the reward. + // => +200 IOTA for each validator assert_validator_total_stake_amounts( validator_addrs(), vector[ - (100 + 200) * NANOS_PER_IOTA, - (200 + 200) * NANOS_PER_IOTA, - (300 + 200) * NANOS_PER_IOTA, - (400 + 200) * NANOS_PER_IOTA, + (100 + 200) * NANOS_PER_IOTA, + (200 + 200) * NANOS_PER_IOTA, + (300 + 200) * NANOS_PER_IOTA, + (400 + 200) * NANOS_PER_IOTA, ], scenario ); unstake(VALIDATOR_ADDR_1, 0, scenario); - // Validator should get the entire reward of 200 plus its initially staked 100 IOTA. + // Validator 1 should get the entire reward of 200 plus its initially staked 100 IOTA. assert_eq(total_iota_balance(VALIDATOR_ADDR_1, scenario), (100+200) * NANOS_PER_IOTA); scenario_val.end(); @@ -219,15 +296,28 @@ module iota_system::rewards_distribution_tests { stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_1, 100, scenario); stake_with(STAKER_ADDR_2, VALIDATOR_ADDR_2, 50, scenario); + + // need to advance epoch so validator's staking starts counting advance_epoch(scenario); - // V1: 200, V2: 250, V3: 300, V4: 400 + + assert_validator_total_stake_amounts( + validator_addrs(), + vector[ + (100 + 100) * NANOS_PER_IOTA, + (200 + 50) * NANOS_PER_IOTA, + 300 * NANOS_PER_IOTA, + 400 * NANOS_PER_IOTA, + ], + scenario + ); set_commission_rate_and_advance_epoch(VALIDATOR_ADDR_1, 500, scenario); // 5% commission + // The computation reward is lower than the target reward, so 400 IOTA should be minted. advance_epoch_with_target_reward_amounts(800, 0, 400, scenario); - // The computation reward is lower than the target reward, so 400 IOTA should be minted. - // Each validator pool has 25% of the voting power and thus gets 25% of the reward (200 IOTA each). + // Each validator pool has 25% of the voting power and thus gets 25% of the reward. + // => +200 IOTA for each validator assert_validator_total_stake_amounts( validator_addrs(), vector[ @@ -260,32 +350,78 @@ module iota_system::rewards_distribution_tests { stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_1, 200, scenario); stake_with(STAKER_ADDR_2, VALIDATOR_ADDR_2, 100, scenario); - advance_epoch(scenario); - assert_validator_total_stake_amounts(validator_addrs(), vector[300 * NANOS_PER_IOTA, 300 * NANOS_PER_IOTA, 300 * NANOS_PER_IOTA, 400 * NANOS_PER_IOTA], scenario); - assert_validator_self_stake_amounts(validator_addrs(), vector[100 * NANOS_PER_IOTA, 200 * NANOS_PER_IOTA, 300 * NANOS_PER_IOTA, 400 * NANOS_PER_IOTA], scenario); + // need to advance epoch so validator's staking starts counting + advance_epoch(scenario); - // Each pool gets 30 IOTA. + assert_validator_total_stake_amounts( + validator_addrs(), + vector[ + (100 + 200) * NANOS_PER_IOTA, + (200 + 100) * NANOS_PER_IOTA, + 300 * NANOS_PER_IOTA, + 400 * NANOS_PER_IOTA, + ], + scenario); + + assert_validator_self_stake_amounts( + validator_addrs(), + vector[ + 100 * NANOS_PER_IOTA, + 200 * NANOS_PER_IOTA, + 300 * NANOS_PER_IOTA, + 400 * NANOS_PER_IOTA, + ], scenario); + + // Each validator pool has 25% of the voting power and thus gets 25% of the reward. + // => +30 IOTA for each pool + // Validator 1 gets 100/300 * 30 IOTA => +10 IOTA for validator 1 + // Validator 2 gets 200/300 * 30 IOTA => +20 IOTA for validator 2 + // Validators 3 and 4 have all the stake in the pool => +30 IOTA for validators 3 and 4 advance_epoch_with_reward_amounts(0, 120, scenario); - assert_validator_self_stake_amounts(validator_addrs(), vector[110 * NANOS_PER_IOTA, 220 * NANOS_PER_IOTA, 330 * NANOS_PER_IOTA, 430 * NANOS_PER_IOTA], scenario); + assert_validator_self_stake_amounts( + validator_addrs(), + vector[ + (100 + 10) * NANOS_PER_IOTA, + (200 + 20) * NANOS_PER_IOTA, + (300 + 30) * NANOS_PER_IOTA, + (400 + 30) * NANOS_PER_IOTA, + ], + scenario); + unstake(STAKER_ADDR_1, 0, scenario); stake_with(STAKER_ADDR_2, VALIDATOR_ADDR_1, 600, scenario); - // Each pool gets 30 IOTA. + + // Each validator pool has 25% of the voting power and thus gets 25% of the reward. + // => +30 IOTA for each pool advance_epoch_with_reward_amounts(0, 120, scenario); - // staker 1 receives only 20 IOTA of rewards, not 40 since we are using pre-epoch exchange rate. - assert_eq(total_iota_balance(STAKER_ADDR_1, scenario), 220 * NANOS_PER_IOTA); - assert_validator_self_stake_amounts(validator_addrs(), vector[140 * NANOS_PER_IOTA, 240 * NANOS_PER_IOTA, 360 * NANOS_PER_IOTA, 460 * NANOS_PER_IOTA], scenario); + // staker 1 receives only 200/300*30=20 IOTA of rewards, (not 40) since we are using pre-epoch exchange rate. + assert_eq(total_iota_balance(STAKER_ADDR_1, scenario), (200 + 20) * NANOS_PER_IOTA); + // The recent changes in stake are not valid for this epoch yet. Thus: + // Validators 1, 3 and 4 have all the stake in the pool => +30 IOTA for validators 1, 3 and 4 + // Validator 2 gets 200/300 * 30 IOTA => +20 IOTA for validator + assert_validator_self_stake_amounts( + validator_addrs(), + vector[ + (110 + 30) * NANOS_PER_IOTA, + (220 + 20) * NANOS_PER_IOTA, + (330 + 30) * NANOS_PER_IOTA, + (430 + 30) * NANOS_PER_IOTA, + ], + scenario); + unstake(STAKER_ADDR_2, 0, scenario); - assert_eq(total_iota_balance(STAKER_ADDR_2, scenario), 120 * NANOS_PER_IOTA); // 20 IOTA of rewards received + // staker 2 receives its available principal (100 IOTA) + 100/300*60=20 IOTA of rewards, relative to 2 epochs. + // The stake added in the last epoch (600 IOTA) is not unstaked yet. + assert_eq(total_iota_balance(STAKER_ADDR_2, scenario), (100 + 20) * NANOS_PER_IOTA); + // +10 IOTA for each pool advance_epoch_with_reward_amounts(0, 40, scenario); - unstake(STAKER_ADDR_2, 0, scenario); // unstake 600 principal IOTA - // additional 600 IOTA of principal and 46 IOTA of rewards withdrawn to Coin - // For this stake, the staking exchange rate is 100 : 140 and the unstaking - // exchange rate is 528 : 750 -ish so the total iota withdraw will be: - // (600 * 100 / 140) * 750 / 528 = ~608. Together with the 120 IOTA we already have, - // that would be about 728 IOTA. + // unstakes the additional 600 IOTA of principal + rewards relative to past epoch + // the rewarded amount is 600/740*10 IOTA + // staker 2's balance is then ~120 + 600 + 8.1081081 + unstake(STAKER_ADDR_2, 0, scenario); // TODO: Come up with better numbers and clean it up! assert_eq(total_iota_balance(STAKER_ADDR_2, scenario), 728108108107); scenario_val.end(); @@ -300,6 +436,7 @@ module iota_system::rewards_distribution_tests { // stake a large amount stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_1, 200000000, scenario); + // need to advance epoch so validator's staking starts counting advance_epoch(scenario); advance_epoch_with_reward_amounts(0, 150000, scenario); @@ -324,28 +461,80 @@ module iota_system::rewards_distribution_tests { stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_1, 100, scenario); stake_with(STAKER_ADDR_2, VALIDATOR_ADDR_2, 100, scenario); + + // need to advance epoch so validator's staking starts counting advance_epoch(scenario); + // Pool's stake: // V1: 200, V2: 300, V3: 300, V4: 400 set_commission_rate_and_advance_epoch(VALIDATOR_ADDR_2, 2000, scenario); // 20% commission + + // Each validator pool has 25% of the voting power and thus gets 25% of the reward. + // => +30 IOTA for each pool advance_epoch_with_reward_amounts(0, 120, scenario); - // V1: 230, V2: 330, V3: 330, V4: 430 - // 2 IOTA, or 20 % of staker_2's rewards, goes to validator_2 - assert_validator_non_self_stake_amounts(validator_addrs(), vector[115 * NANOS_PER_IOTA, 108 * NANOS_PER_IOTA, 0, 0], scenario); - assert_validator_self_stake_amounts(validator_addrs(), vector[115 * NANOS_PER_IOTA, 222 * NANOS_PER_IOTA, 330 * NANOS_PER_IOTA, 430 * NANOS_PER_IOTA], scenario); + + // staker 1 gets 100/200*30 IOTA => +15 IOTA + // staker 2 would get 100/300*30 IOTA = 10 IOTA. However, since the commission rate is 20% for this pool, they get 8 IOTA + assert_validator_non_self_stake_amounts( + validator_addrs(), + vector[ + (100 + 15) * NANOS_PER_IOTA, + (100 + 8) * NANOS_PER_IOTA, + 0, + 0, + ], + scenario); + + // Validator 1 gets 100/200*30 => +15 IOTA + // Validator 2 gets 200/300*30 + 2 (from the commission) => +22 IOTA + // Validators 3 and 4 have all the pool stake and get +30 IOTA each. + assert_validator_self_stake_amounts( + validator_addrs(), + vector[ + (100 + 15) * NANOS_PER_IOTA, + (200 + 22) * NANOS_PER_IOTA, + (300 + 30) * NANOS_PER_IOTA, + (400 + 30) * NANOS_PER_IOTA, + ], + scenario); set_commission_rate_and_advance_epoch(VALIDATOR_ADDR_1, 1000, scenario); // 10% commission + // +60 IOTA for each pool advance_epoch_with_reward_amounts(0, 240, scenario); - assert_validator_total_stake_amounts(validator_addrs(), vector[290 * NANOS_PER_IOTA, 390 * NANOS_PER_IOTA, 390 * NANOS_PER_IOTA, 490 * NANOS_PER_IOTA], scenario); + assert_validator_total_stake_amounts( + validator_addrs(), + vector[ + (230 + 60) * NANOS_PER_IOTA, + (330 + 60) * NANOS_PER_IOTA, + (330 + 60) * NANOS_PER_IOTA, + (430 + 60) * NANOS_PER_IOTA, + ], scenario); // Staker 1 rewards in the recent distribution is 0.9 x 30 = 27 IOTA // Validator 1 rewards in the recent distribution is 60 - 27 = 33 IOTA // Staker 2 amounts for 0.8 * 60 * (108 / 330) + 108 = 123.709 IOTA // Validator 2 amounts for 390 - 123.709 = 266.291 IOTA - assert_validator_non_self_stake_amounts(validator_addrs(), vector[142 * NANOS_PER_IOTA, 123709090909, 0, 0], scenario); - assert_validator_self_stake_amounts(validator_addrs(), vector[148 * NANOS_PER_IOTA, 266290909091, 390 * NANOS_PER_IOTA, 490 * NANOS_PER_IOTA], scenario); + assert_validator_non_self_stake_amounts( + validator_addrs(), + vector[ + 142 * NANOS_PER_IOTA, + 123709090909, + 0, + 0, + ], + scenario); + + assert_validator_self_stake_amounts( + validator_addrs(), + vector[ + 148 * NANOS_PER_IOTA, + 266290909091, + 390 * NANOS_PER_IOTA, + 490 * NANOS_PER_IOTA, + ], + scenario); scenario_val.end(); } @@ -357,6 +546,8 @@ module iota_system::rewards_distribution_tests { let scenario = &mut scenario_val; stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_1, 100, scenario); + + // need to advance epoch so validator's staking starts counting advance_epoch(scenario); // V1: 200, V2: 200, V3: 300, V4: 400 @@ -397,7 +588,9 @@ module iota_system::rewards_distribution_tests { set_up_iota_system_state(); let mut scenario_val = test_scenario::begin(VALIDATOR_ADDR_1); let scenario = &mut scenario_val; + let initial_supply = total_supply(scenario); + // need to advance epoch so validator's staking starts counting advance_epoch(scenario); stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_1, 100, scenario); @@ -405,7 +598,7 @@ module iota_system::rewards_distribution_tests { advance_epoch(scenario); - // validator_2 is reported by 3 other validators, so 75% of total stake. + // validator_2 is reported by 3 other validators, so 75% of total stake, since the voting power is capped at 10%. report_validator(VALIDATOR_ADDR_1, VALIDATOR_ADDR_2, scenario); report_validator(VALIDATOR_ADDR_3, VALIDATOR_ADDR_2, scenario); report_validator(VALIDATOR_ADDR_4, VALIDATOR_ADDR_2, scenario); @@ -415,24 +608,38 @@ module iota_system::rewards_distribution_tests { // 3600 IOTA of total rewards, 50% threshold and 10% reward slashing. // So validator_2 is the only one whose rewards should get slashed. + // Each pool would get +900 IOTA, disregarding the slashing rate + // Validator 1 gets 100/200*900 = +450 IOTA + // Validator 2 would get 200/300*900 = +600 IOTA (disregarding slashing) + // Validators 3 and 4 have all the pool stake, so they get +900 IOTA each advance_epoch_with_reward_amounts_and_slashing_rates( 0, 3600, 1000, scenario ); // Without reward slashing, the validator's stakes should be [100+450, 200+600, 300+900, 400+900] // after the last epoch advancement. - // Since 60 IOTA, or 10% of validator_2's rewards (600) are slashed, she only has 800 - 60 = 740 now. - // There are in total 90 IOTA of rewards slashed (60 from the validator, and 30 from her staker) - // so the unslashed validators each get their share of additional rewards, which is 30. - assert_validator_self_stake_amounts(validator_addrs(), vector[565 * NANOS_PER_IOTA, 740 * NANOS_PER_IOTA, 1230 * NANOS_PER_IOTA, 1330 * NANOS_PER_IOTA], scenario); + // Since 60 IOTA, or 10% of validator_2's rewards (600) are slashed, she only has 200 + 600 - 60 = 740 now. + // Note that the slashed rewards are not distributed to the other validators. + assert_validator_self_stake_amounts( + validator_addrs(), + vector[ + (100 + 450) * NANOS_PER_IOTA, + (200 + 600 - 60) * NANOS_PER_IOTA, + (300 + 900) * NANOS_PER_IOTA, + (400 + 900) * NANOS_PER_IOTA, + ], + scenario); // Unstake so we can check the stake rewards as well. unstake(STAKER_ADDR_1, 0, scenario); unstake(STAKER_ADDR_2, 0, scenario); - // Same analysis as above. Delegator 1 has 3 additional IOTA, and 10% of staker 2's rewards are slashed. - assert!(total_iota_balance(STAKER_ADDR_1, scenario) == 565 * NANOS_PER_IOTA); - assert!(total_iota_balance(STAKER_ADDR_2, scenario) == 370 * NANOS_PER_IOTA); + // Same analysis as above. Delegator 1 gets 450 IOTA, and 10% of staker 2's rewards (30 IOTA) are slashed. + assert!(total_iota_balance(STAKER_ADDR_1, scenario) == (100 + 450) * NANOS_PER_IOTA); + assert!(total_iota_balance(STAKER_ADDR_2, scenario) == (100 + 300 - 30) * NANOS_PER_IOTA); + + // Ensure that the slashed rewards are burned. + assert_eq(total_supply(scenario), initial_supply - 90 * NANOS_PER_IOTA); scenario_val.end(); } @@ -441,7 +648,9 @@ module iota_system::rewards_distribution_tests { set_up_iota_system_state(); let mut scenario_val = test_scenario::begin(VALIDATOR_ADDR_1); let scenario = &mut scenario_val; + let initial_supply = total_supply(scenario); + // need to advance epoch so validator's staking starts counting advance_epoch(scenario); stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_1, 100, scenario); @@ -449,14 +658,17 @@ module iota_system::rewards_distribution_tests { advance_epoch(scenario); - // validator_2 is reported by 3 other validators, so 75% of total stake. + // validator_2 is reported by 3 other validators, so 75% of total stake, since the voting power is capped at 10%. report_validator(VALIDATOR_ADDR_1, VALIDATOR_ADDR_2, scenario); report_validator(VALIDATOR_ADDR_3, VALIDATOR_ADDR_2, scenario); report_validator(VALIDATOR_ADDR_4, VALIDATOR_ADDR_2, scenario); - // 3600 IOTA of total rewards, 100% reward slashing. // So validator_2 is the only one whose rewards should get slashed. + // Each pool would get +900 IOTA, disregarding the slashing rate + // Validator 1 gets 100/200*900 = +450 IOTA + // Validator 2 would get 200/300*900 = +600 IOTA (disregarding slashing) + // Validators 3 and 4 have all the pool stake, so they get +900 IOTA each advance_epoch_with_reward_amounts_and_slashing_rates( 0, 3600, 10_000, scenario ); @@ -464,16 +676,27 @@ module iota_system::rewards_distribution_tests { // Without reward slashing, the validator's stakes should be [100+450, 200+600, 300+900, 400+900] // after the last epoch advancement. // The entire rewards of validator 2's staking pool are slashed, which is 900 IOTA. - // so the unslashed validators each get their share of additional rewards, which is 300. - assert_validator_self_stake_amounts(validator_addrs(), vector[(550 + 150) * NANOS_PER_IOTA, 200 * NANOS_PER_IOTA, (1200 + 300) * NANOS_PER_IOTA, (1300 + 300) * NANOS_PER_IOTA], scenario); + assert_validator_self_stake_amounts( + validator_addrs(), + vector[ + (100 + 450) * NANOS_PER_IOTA, + (200 + 600 - 600) * NANOS_PER_IOTA, + (300 + 900) * NANOS_PER_IOTA, + (400 + 900) * NANOS_PER_IOTA, + ], + scenario); // Unstake so we can check the stake rewards as well. unstake(STAKER_ADDR_1, 0, scenario); unstake(STAKER_ADDR_2, 0, scenario); - // Same analysis as above. Staker 1 has 150 additional IOTA, and since all of staker 2's rewards are slashed she only gets back her principal. - assert!(total_iota_balance(STAKER_ADDR_1, scenario) == (550 + 150) * NANOS_PER_IOTA); - assert!(total_iota_balance(STAKER_ADDR_2, scenario) == 100 * NANOS_PER_IOTA); + // Same analysis as above. Staker 1 gets 450 IOTA as rewards, and since all of staker 2's rewards are slashed she only gets back her principal. + assert!(total_iota_balance(STAKER_ADDR_1, scenario) == (100 + 450) * NANOS_PER_IOTA); + assert!(total_iota_balance(STAKER_ADDR_2, scenario) == (100 + 300 - 300) * NANOS_PER_IOTA); + + // Ensure that the slashed rewards are burned. + assert_eq(total_supply(scenario), initial_supply - 900 * NANOS_PER_IOTA); + scenario_val.end(); } @@ -482,41 +705,64 @@ module iota_system::rewards_distribution_tests { set_up_iota_system_state(); let mut scenario_val = test_scenario::begin(VALIDATOR_ADDR_1); let scenario = &mut scenario_val; + let initial_supply = total_supply(scenario); - // Put 300 IOTA into the storage fund. + // Put 300 IOTA into the storage fund. This should not change the pools' stake or give rewards. advance_epoch_with_reward_amounts(300, 0, scenario); + assert_validator_total_stake_amounts( + validator_addrs(), + vector[ + 100 * NANOS_PER_IOTA, + 200 * NANOS_PER_IOTA, + 300 * NANOS_PER_IOTA, + 400 * NANOS_PER_IOTA, + ], scenario); // Add a few stakes. - stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_3, 100, scenario); + stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_3, 200, scenario); stake_with(STAKER_ADDR_2, VALIDATOR_ADDR_4, 100, scenario); + + // need to advance epoch so validator's staking starts counting advance_epoch(scenario); - // validator_4 is reported by 3 other validators, so 75% of total stake. + // validator_4 is reported by 3 other validators, so 75% of total stake, since the voting power is capped at 10%. report_validator(VALIDATOR_ADDR_1, VALIDATOR_ADDR_4, scenario); report_validator(VALIDATOR_ADDR_2, VALIDATOR_ADDR_4, scenario); report_validator(VALIDATOR_ADDR_3, VALIDATOR_ADDR_4, scenario); // 1000 IOTA of storage charges, 1500 IOTA of computation rewards, 50% slashing threshold // and 20% slashing rate + // because of the voting power cap, each pool gets +375 IOTA advance_epoch_with_reward_amounts_and_slashing_rates( 1000, 1500, 2000, scenario ); - // Each unslashed validator staking pool gets 375 IOTA of computation rewards + 25 IOTA (1/3) of validator 4's slashed computation reward, - // so in total it gets 400 IOTA of rewards. - // Validator 3's should get (375 + 25) * 3/4 = 300 in computation rewards. - // Validator 4's should get (375 - 75) * 4/5 = 240 in computation rewards. - assert_validator_self_stake_amounts(validator_addrs(), vector[500 * NANOS_PER_IOTA, 600 * NANOS_PER_IOTA, 600 * NANOS_PER_IOTA, 640 * NANOS_PER_IOTA], scenario); + // Validator 1 should get 375 * 1 = 375 in rewards. + // Validator 2 should get 375 * 1 = 375 in rewards. + // Validator 3 should get 375 * 3/5 = 225 in rewards. + // Validator 4 should get (375 - 75) * 4/5 = 240 in rewards. + assert_validator_self_stake_amounts( + validator_addrs(), + vector[ + (100 + 375) * NANOS_PER_IOTA, + (200 + 375) * NANOS_PER_IOTA, + (300 + 225) * NANOS_PER_IOTA, + (400 + 240) * NANOS_PER_IOTA, + ], + scenario); // Unstake so we can check the stake rewards as well. unstake(STAKER_ADDR_1, 0, scenario); unstake(STAKER_ADDR_2, 0, scenario); - // Staker 1 gets (375 + 25) * 1/4 = 100 IOTA of rewards. - assert_eq(total_iota_balance(STAKER_ADDR_1, scenario), (100 + 100) * NANOS_PER_IOTA); + // Staker 1 gets 375 * 2/5 = 150 IOTA of rewards. + assert_eq(total_iota_balance(STAKER_ADDR_1, scenario), (200 + 150) * NANOS_PER_IOTA); // Staker 2 gets (375 - 75) * 1/5 = 60 IOTA of rewards. assert_eq(total_iota_balance(STAKER_ADDR_2, scenario), (100 + 60) * NANOS_PER_IOTA); + // Ensure that the slashed rewards are burned. + assert_eq(total_supply(scenario), initial_supply - 75 * NANOS_PER_IOTA); + scenario_val.end(); } @@ -527,6 +773,7 @@ module iota_system::rewards_distribution_tests { set_up_iota_system_state(); let mut scenario_val = test_scenario::begin(VALIDATOR_ADDR_1); let scenario = &mut scenario_val; + let initial_supply = total_supply(scenario); slash_all_validators(scenario); @@ -535,7 +782,14 @@ module iota_system::rewards_distribution_tests { ); // All validators should have 0 rewards added so their stake stays the same. - assert_validator_self_stake_amounts(validator_addrs(), vector[100 * NANOS_PER_IOTA, 200 * NANOS_PER_IOTA, 300 * NANOS_PER_IOTA, 400 * NANOS_PER_IOTA], scenario); + assert_validator_self_stake_amounts( + validator_addrs(), + vector[ + 100 * NANOS_PER_IOTA, + 200 * NANOS_PER_IOTA, + 300 * NANOS_PER_IOTA, + 400 * NANOS_PER_IOTA, + ], scenario); scenario.next_tx(@0x0); // Storage fund balance should be the same as before. @@ -545,6 +799,9 @@ module iota_system::rewards_distribution_tests { // The entire 1000 IOTA of storage charges should go to the object rebate portion of the storage fund. assert_eq(system_state.get_storage_fund_object_rebates(), 1000 * NANOS_PER_IOTA); + // Ensure that the slashed rewards are burned. + assert_eq(system_state.get_total_iota_supply(), initial_supply - 500 * NANOS_PER_IOTA); + test_scenario::return_shared(system_state); scenario_val.end(); } @@ -557,28 +814,45 @@ module iota_system::rewards_distribution_tests { stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_1, 220, scenario); + // since the voting power is capped at 10%, each pool gets +10 IOTA + // Pools' stake after this are + // P1: 100 + 220 + 10 = 330; P2: 200 + 10 = 210; P3: 300 + 10 = 310; P4: 400 + 10 = 410 advance_epoch_with_reward_amounts(0, 40, scenario); stake_with(STAKER_ADDR_2, VALIDATOR_ADDR_1, 480, scenario); - // Staker 1 gets 2/3 * 1/4 * 120 = 20 IOTA here. + // Here, each pool gets +30 IOTA + // Staker 1 gets 220/330 * 30 = +20 IOTA, totalling 240 IOTA of stake + // Pools' stake after this are + // P1: 330 + 480 + 30 = 840; P2: 210 + 30 = 240; P3: 310 + 30 = 340; P4: 410 + 30 = 440 advance_epoch_with_reward_amounts(0, 120, scenario); stake_with(STAKER_ADDR_1, VALIDATOR_ADDR_1, 130, scenario); stake_with(STAKER_ADDR_3, VALIDATOR_ADDR_1, 390, scenario); - // Staker 1 gets 20 IOTA here and staker 2 gets 40 IOTA here. + // Here, each pool gets +70 IOTA + // Staker 1 gets 240/840*70 = +20 IOTA, totalling 390 IOTA of stake + // Staker 2 gets 480/840*70 = +40 IOTA, totalling 520 IOTA of stake + // Pools' stake after this are + // P1: 840 + 130 + 390 + 70 = 1430; P2: 240 + 70 = 310; P3: 340 + 70 = 410; P4: 440 + 70 = 510 advance_epoch_with_reward_amounts(0, 280, scenario); + stake_with(STAKER_ADDR_3, VALIDATOR_ADDR_1, 280, scenario); stake_with(STAKER_ADDR_4, VALIDATOR_ADDR_1, 1400, scenario); - // Staker 1 gets 30 IOTA, staker 2 gets 40 IOTA and staker 3 gets 30 IOTA. + // Here, each pool gets +110 IOTA + // Staker 1 gets 390/1430*110 = +30 IOTA, totalling 420 IOTA of stake + // Staker 2 gets 520/1430*110 = +40 IOTA, totalling 560 IOTA of stake + // Staker 3 gets 390/1430*110 = +30 IOTA, totalling 700 IOTA of stake + // Pools' stake after this are + // P1: 1430 + 280 + 1400 + 110 = 3220; P2: 310 + 110 = 420 + // P3: 410 + 110 = 520; P4: 510 + 110 = 620 advance_epoch_with_reward_amounts(0, 440, scenario); scenario.next_tx(@0x0); let mut system_state = scenario.take_shared(); // Check that we have the right amount of IOTA in the staking pool. - assert_eq(system_state.validator_stake_amount(VALIDATOR_ADDR_1), 140 * 23 * NANOS_PER_IOTA); + assert_eq(system_state.validator_stake_amount(VALIDATOR_ADDR_1), 3220 * NANOS_PER_IOTA); test_scenario::return_shared(system_state); // Withdraw all stakes at once. @@ -589,22 +863,16 @@ module iota_system::rewards_distribution_tests { unstake(STAKER_ADDR_3, 0, scenario); unstake(STAKER_ADDR_4, 0, scenario); - // staker 1's first stake was active for 3 epochs so got 20 * 3 = 60 IOTA of rewards - // and her second stake was active for only one epoch and got 10 IOTA of rewards. - assert_eq(total_iota_balance(STAKER_ADDR_1, scenario), (220 + 130 + 20 * 3 + 10) * NANOS_PER_IOTA); - // staker 2's stake was active for 2 epochs so got 40 * 2 = 80 IOTA of rewards - assert_eq(total_iota_balance(STAKER_ADDR_2, scenario), (480 + 40 * 2) * NANOS_PER_IOTA); - // staker 3's first stake was active for 1 epoch and got 30 IOTA of rewards - // and her second stake didn't get any rewards. - assert_eq(total_iota_balance(STAKER_ADDR_3, scenario), (390 + 280 + 30) * NANOS_PER_IOTA); - // staker 4 joined and left in an epoch where no rewards were earned so she got no rewards. + assert_eq(total_iota_balance(STAKER_ADDR_1, scenario), 420 * NANOS_PER_IOTA); + assert_eq(total_iota_balance(STAKER_ADDR_2, scenario), 560 * NANOS_PER_IOTA); + assert_eq(total_iota_balance(STAKER_ADDR_3, scenario), 700 * NANOS_PER_IOTA); assert_eq(total_iota_balance(STAKER_ADDR_4, scenario), 1400 * NANOS_PER_IOTA); advance_epoch_with_reward_amounts(0, 0, scenario); scenario.next_tx(@0x0); let mut system_state = scenario.take_shared(); - // Since all the stakes are gone the pool is empty except for the validator's original stake. + // Since all the stakes are gone the pool is empty except for the validator's stake. assert_eq(system_state.validator_stake_amount(VALIDATOR_ADDR_1), 140 * NANOS_PER_IOTA); test_scenario::return_shared(system_state); scenario_val.end(); @@ -704,6 +972,11 @@ module iota_system::rewards_distribution_tests { scenario_val.end(); } + // This will set up the IOTA system state with the following validator stakes: + // Valdiator 1 => 100 + // Valdiator 2 => 200 + // Valdiator 3 => 300 + // Valdiator 4 => 400 fun set_up_iota_system_state() { let mut scenario_val = test_scenario::begin(@0x0); let scenario = &mut scenario_val; @@ -719,6 +992,11 @@ module iota_system::rewards_distribution_tests { scenario_val.end(); } + // This will set up the IOTA system state with the following validator stakes: + // Valdiator 1 => 100000000 + // Valdiator 2 => 200000000 + // Valdiator 3 => 300000000 + // Valdiator 4 => 400000000 fun set_up_iota_system_state_with_big_amounts() { let mut scenario_val = test_scenario::begin(@0x0); let scenario = &mut scenario_val; diff --git a/crates/iota-framework/packages_compiled/iota-system b/crates/iota-framework/packages_compiled/iota-system index 794306b9814..3869d79f95f 100644 Binary files a/crates/iota-framework/packages_compiled/iota-system and b/crates/iota-framework/packages_compiled/iota-system differ diff --git a/crates/iota-framework/published_api.txt b/crates/iota-framework/published_api.txt index fc186af1667..72299612773 100644 --- a/crates/iota-framework/published_api.txt +++ b/crates/iota-framework/published_api.txt @@ -508,7 +508,7 @@ find_validator find_validator_from_table_vec fun 0x3::validator_set -get_validator_indices +get_validator_indices_set fun 0x3::validator_set get_validator_mut @@ -565,9 +565,6 @@ calculate_total_stakes adjust_stake_and_gas_price fun 0x3::validator_set -compute_reward_adjustments - fun - 0x3::validator_set compute_slashed_validators fun 0x3::validator_set diff --git a/crates/iota-indexer/tests/rpc-tests/governance_api.rs b/crates/iota-indexer/tests/rpc-tests/governance_api.rs index 3f662fef1d3..f79f35b607a 100644 --- a/crates/iota-indexer/tests/rpc-tests/governance_api.rs +++ b/crates/iota-indexer/tests/rpc-tests/governance_api.rs @@ -5,6 +5,7 @@ use iota_json_rpc_api::{GovernanceReadApiClient, TransactionBuilderClient}; use iota_json_rpc_types::{ DelegatedStake, DelegatedTimelockedStake, StakeStatus, TransactionBlockBytes, }; +use iota_protocol_config::ProtocolVersion; use iota_test_transaction_builder::TestTransactionBuilder; use iota_types::{ IOTA_FRAMEWORK_ADDRESS, IOTA_SYSTEM_ADDRESS, @@ -484,7 +485,7 @@ fn get_latest_iota_system_state() { indexer_wait_for_checkpoint(store, 1).await; let system_state = client.get_latest_iota_system_state().await.unwrap(); - assert_eq!(system_state.protocol_version, 1); + assert_eq!(system_state.protocol_version, ProtocolVersion::MAX.as_u64()); assert_eq!(system_state.system_state_version, 1); }); } diff --git a/crates/iota-indexer/tests/rpc-tests/read_api.rs b/crates/iota-indexer/tests/rpc-tests/read_api.rs index 382c6ea4ad3..94f0aa0f47c 100644 --- a/crates/iota-indexer/tests/rpc-tests/read_api.rs +++ b/crates/iota-indexer/tests/rpc-tests/read_api.rs @@ -8,6 +8,7 @@ use iota_json_rpc_types::{ CheckpointId, IotaGetPastObjectRequest, IotaObjectDataOptions, IotaObjectResponse, IotaObjectResponseQuery, IotaTransactionBlockResponse, IotaTransactionBlockResponseOptions, }; +use iota_protocol_config::ProtocolVersion; use iota_types::{ base_types::{ObjectID, SequenceNumber}, digests::TransactionDigest, @@ -1099,7 +1100,10 @@ fn get_protocol_config() { assert_eq!(fullnode_protocol_config, indexer_protocol_config); - let indexer_protocol_config = client.get_protocol_config(Some(1u64.into())).await.unwrap(); + let indexer_protocol_config = client + .get_protocol_config(Some(ProtocolVersion::MAX.as_u64().into())) + .await + .unwrap(); assert_eq!(fullnode_protocol_config, indexer_protocol_config); }); @@ -1122,7 +1126,11 @@ fn get_protocol_config_invalid_protocol_version() { assert!(rpc_call_error_msg_matches( result, - r#"{"code":-32603,"message":"Unsupported protocol version requested. Min supported: 1, max supported: 1"}"#, + &format!( + r#"{{"code":-32603,"message":"Unsupported protocol version requested. Min supported: {}, max supported: {}"}}"#, + ProtocolVersion::MIN.as_u64(), + ProtocolVersion::MAX.as_u64() + ), )); }); } diff --git a/crates/iota-open-rpc/spec/openrpc.json b/crates/iota-open-rpc/spec/openrpc.json index dfcd4ecccc2..f5ca3c7c01e 100644 --- a/crates/iota-open-rpc/spec/openrpc.json +++ b/crates/iota-open-rpc/spec/openrpc.json @@ -1300,7 +1300,7 @@ "name": "Result", "value": { "minSupportedProtocolVersion": "1", - "maxSupportedProtocolVersion": "1", + "maxSupportedProtocolVersion": "2", "protocolVersion": "1", "featureFlags": { "accept_zklogin_in_multisig": false, diff --git a/crates/iota-protocol-config/src/lib.rs b/crates/iota-protocol-config/src/lib.rs index 4f204db2ac3..a216a4efefb 100644 --- a/crates/iota-protocol-config/src/lib.rs +++ b/crates/iota-protocol-config/src/lib.rs @@ -16,11 +16,13 @@ use tracing::{info, warn}; /// The minimum and maximum protocol versions supported by this build. const MIN_PROTOCOL_VERSION: u64 = 1; -pub const MAX_PROTOCOL_VERSION: u64 = 1; +pub const MAX_PROTOCOL_VERSION: u64 = 2; // Record history of protocol version allocations here: // // Version 1: Original version. +// Version 2: Don't redistribute slashed staking rewards, fix computation of +// SystemEpochInfoEventV1. #[derive(Copy, Clone, Debug, Hash, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)] pub struct ProtocolVersion(u64); @@ -37,10 +39,10 @@ impl ProtocolVersion { #[cfg(not(msim))] const MAX_ALLOWED: Self = Self::MAX; - // We create 4 additional "fake" versions in simulator builds so that we can + // We create 3 additional "fake" versions in simulator builds so that we can // test upgrades. #[cfg(msim)] - pub const MAX_ALLOWED: Self = Self(MAX_PROTOCOL_VERSION + 4); + pub const MAX_ALLOWED: Self = Self(MAX_PROTOCOL_VERSION + 3); pub fn new(v: u64) -> Self { Self(v) @@ -1160,8 +1162,8 @@ impl ProtocolConfig { #[cfg(msim)] { // populate the fake simulator version # with a different base tx cost. - if version == ProtocolVersion::MAX_ALLOWED { - let mut config = Self::get_for_version_impl(version - 1, Chain::Unknown); + if version > ProtocolVersion::MAX { + let mut config = Self::get_for_version_impl(ProtocolVersion::MAX, Chain::Unknown); config.base_tx_cost_fixed = Some(config.base_tx_cost_fixed() + 1000); return config; } @@ -1632,15 +1634,11 @@ impl ProtocolConfig { cfg.feature_flags.passkey_auth = true; } - // Ignore this check for the fake versions for - // `test_choose_next_system_packages`. TODO: remove the never_loop - // attribute when the version 2 is added. - #[allow(clippy::never_loop)] - #[cfg(not(msim))] for cur in 2..=version.0 { match cur { 1 => unreachable!(), - + // version 2 is a new framework version but with no config changes + 2 => {} // Use this template when making changes: // // // modify an existing constant. diff --git a/crates/iota-protocol-config/src/snapshots/iota_protocol_config__test__Mainnet_version_2.snap b/crates/iota-protocol-config/src/snapshots/iota_protocol_config__test__Mainnet_version_2.snap new file mode 100644 index 00000000000..3f0064e48a4 --- /dev/null +++ b/crates/iota-protocol-config/src/snapshots/iota_protocol_config__test__Mainnet_version_2.snap @@ -0,0 +1,270 @@ +--- +source: crates/iota-protocol-config/src/lib.rs +expression: "ProtocolConfig::get_for_version(cur, *chain_id)" +snapshot_kind: text +--- +version: 2 +feature_flags: + consensus_transaction_ordering: ByGasPrice + per_object_congestion_control_mode: TotalTxCount + zklogin_max_epoch_upper_bound_delta: 30 +max_tx_size_bytes: 131072 +max_input_objects: 2048 +max_size_written_objects: 5000000 +max_size_written_objects_system_tx: 50000000 +max_serialized_tx_effects_size_bytes: 524288 +max_serialized_tx_effects_size_bytes_system_tx: 8388608 +max_gas_payment_objects: 256 +max_modules_in_publish: 64 +max_package_dependencies: 32 +max_arguments: 512 +max_type_arguments: 16 +max_type_argument_depth: 16 +max_pure_argument_size: 16384 +max_programmable_tx_commands: 1024 +move_binary_format_version: 7 +min_move_binary_format_version: 6 +binary_module_handles: 100 +binary_struct_handles: 300 +binary_function_handles: 1500 +binary_function_instantiations: 750 +binary_signatures: 1000 +binary_constant_pool: 4000 +binary_identifiers: 10000 +binary_address_identifiers: 100 +binary_struct_defs: 200 +binary_struct_def_instantiations: 100 +binary_function_defs: 1000 +binary_field_handles: 500 +binary_field_instantiations: 250 +binary_friend_decls: 100 +max_move_object_size: 256000 +max_move_package_size: 102400 +max_publish_or_upgrade_per_ptb: 5 +max_tx_gas: 50000000000 +max_gas_price: 100000 +max_gas_computation_bucket: 5000000 +gas_rounding_step: 1000 +max_loop_depth: 5 +max_generic_instantiation_length: 32 +max_function_parameters: 128 +max_basic_blocks: 1024 +max_value_stack_size: 1024 +max_type_nodes: 256 +max_push_size: 10000 +max_struct_definitions: 200 +max_function_definitions: 1000 +max_fields_in_struct: 32 +max_dependency_depth: 100 +max_num_event_emit: 1024 +max_num_new_move_object_ids: 2048 +max_num_new_move_object_ids_system_tx: 32768 +max_num_deleted_move_object_ids: 2048 +max_num_deleted_move_object_ids_system_tx: 32768 +max_num_transferred_move_object_ids: 2048 +max_num_transferred_move_object_ids_system_tx: 32768 +max_event_emit_size: 256000 +max_event_emit_size_total: 65536000 +max_move_vector_len: 262144 +max_move_identifier_len: 128 +max_move_value_depth: 128 +max_back_edges_per_function: 10000 +max_back_edges_per_module: 10000 +max_verifier_meter_ticks_per_function: 16000000 +max_meter_ticks_per_module: 16000000 +max_meter_ticks_per_package: 16000000 +object_runtime_max_num_cached_objects: 1000 +object_runtime_max_num_cached_objects_system_tx: 16000 +object_runtime_max_num_store_entries: 1000 +object_runtime_max_num_store_entries_system_tx: 16000 +base_tx_cost_fixed: 1000 +package_publish_cost_fixed: 1000 +base_tx_cost_per_byte: 0 +package_publish_cost_per_byte: 80 +obj_access_cost_read_per_byte: 15 +obj_access_cost_mutate_per_byte: 40 +obj_access_cost_delete_per_byte: 40 +obj_access_cost_verify_per_byte: 200 +gas_model_version: 1 +obj_data_cost_refundable: 100 +obj_metadata_cost_non_refundable: 50 +storage_rebate_rate: 10000 +reward_slashing_rate: 10000 +storage_gas_price: 76 +validator_target_reward: 767000000000000 +max_transactions_per_checkpoint: 10000 +max_checkpoint_size_bytes: 31457280 +buffer_stake_for_protocol_upgrade_bps: 5000 +address_from_bytes_cost_base: 52 +address_to_u256_cost_base: 52 +address_from_u256_cost_base: 52 +config_read_setting_impl_cost_base: 100 +config_read_setting_impl_cost_per_byte: 40 +dynamic_field_hash_type_and_key_cost_base: 100 +dynamic_field_hash_type_and_key_type_cost_per_byte: 2 +dynamic_field_hash_type_and_key_value_cost_per_byte: 2 +dynamic_field_hash_type_and_key_type_tag_cost_per_byte: 2 +dynamic_field_add_child_object_cost_base: 100 +dynamic_field_add_child_object_type_cost_per_byte: 10 +dynamic_field_add_child_object_value_cost_per_byte: 10 +dynamic_field_add_child_object_struct_tag_cost_per_byte: 10 +dynamic_field_borrow_child_object_cost_base: 100 +dynamic_field_borrow_child_object_child_ref_cost_per_byte: 10 +dynamic_field_borrow_child_object_type_cost_per_byte: 10 +dynamic_field_remove_child_object_cost_base: 100 +dynamic_field_remove_child_object_child_cost_per_byte: 2 +dynamic_field_remove_child_object_type_cost_per_byte: 2 +dynamic_field_has_child_object_cost_base: 100 +dynamic_field_has_child_object_with_ty_cost_base: 100 +dynamic_field_has_child_object_with_ty_type_cost_per_byte: 2 +dynamic_field_has_child_object_with_ty_type_tag_cost_per_byte: 2 +event_emit_cost_base: 52 +event_emit_value_size_derivation_cost_per_byte: 2 +event_emit_tag_size_derivation_cost_per_byte: 5 +event_emit_output_cost_per_byte: 10 +object_borrow_uid_cost_base: 52 +object_delete_impl_cost_base: 52 +object_record_new_uid_cost_base: 52 +transfer_transfer_internal_cost_base: 52 +transfer_freeze_object_cost_base: 52 +transfer_share_object_cost_base: 52 +transfer_receive_object_cost_base: 52 +tx_context_derive_id_cost_base: 52 +types_is_one_time_witness_cost_base: 52 +types_is_one_time_witness_type_tag_cost_per_byte: 2 +types_is_one_time_witness_type_cost_per_byte: 2 +validator_validate_metadata_cost_base: 52 +validator_validate_metadata_data_cost_per_byte: 2 +crypto_invalid_arguments_cost: 100 +bls12381_bls12381_min_sig_verify_cost_base: 52 +bls12381_bls12381_min_sig_verify_msg_cost_per_byte: 2 +bls12381_bls12381_min_sig_verify_msg_cost_per_block: 2 +bls12381_bls12381_min_pk_verify_cost_base: 52 +bls12381_bls12381_min_pk_verify_msg_cost_per_byte: 2 +bls12381_bls12381_min_pk_verify_msg_cost_per_block: 2 +ecdsa_k1_ecrecover_keccak256_cost_base: 52 +ecdsa_k1_ecrecover_keccak256_msg_cost_per_byte: 2 +ecdsa_k1_ecrecover_keccak256_msg_cost_per_block: 2 +ecdsa_k1_ecrecover_sha256_cost_base: 52 +ecdsa_k1_ecrecover_sha256_msg_cost_per_byte: 2 +ecdsa_k1_ecrecover_sha256_msg_cost_per_block: 2 +ecdsa_k1_decompress_pubkey_cost_base: 52 +ecdsa_k1_secp256k1_verify_keccak256_cost_base: 52 +ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_byte: 2 +ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_block: 2 +ecdsa_k1_secp256k1_verify_sha256_cost_base: 52 +ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_byte: 2 +ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_block: 2 +ecdsa_r1_ecrecover_keccak256_cost_base: 52 +ecdsa_r1_ecrecover_keccak256_msg_cost_per_byte: 2 +ecdsa_r1_ecrecover_keccak256_msg_cost_per_block: 2 +ecdsa_r1_ecrecover_sha256_cost_base: 52 +ecdsa_r1_ecrecover_sha256_msg_cost_per_byte: 2 +ecdsa_r1_ecrecover_sha256_msg_cost_per_block: 2 +ecdsa_r1_secp256r1_verify_keccak256_cost_base: 52 +ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_byte: 2 +ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_block: 2 +ecdsa_r1_secp256r1_verify_sha256_cost_base: 52 +ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_byte: 2 +ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_block: 2 +ecvrf_ecvrf_verify_cost_base: 52 +ecvrf_ecvrf_verify_alpha_string_cost_per_byte: 2 +ecvrf_ecvrf_verify_alpha_string_cost_per_block: 2 +ed25519_ed25519_verify_cost_base: 52 +ed25519_ed25519_verify_msg_cost_per_byte: 2 +ed25519_ed25519_verify_msg_cost_per_block: 2 +groth16_prepare_verifying_key_bls12381_cost_base: 52 +groth16_prepare_verifying_key_bn254_cost_base: 52 +groth16_verify_groth16_proof_internal_bls12381_cost_base: 52 +groth16_verify_groth16_proof_internal_bls12381_cost_per_public_input: 2 +groth16_verify_groth16_proof_internal_bn254_cost_base: 52 +groth16_verify_groth16_proof_internal_bn254_cost_per_public_input: 2 +groth16_verify_groth16_proof_internal_public_input_cost_per_byte: 2 +hash_blake2b256_cost_base: 52 +hash_blake2b256_data_cost_per_byte: 2 +hash_blake2b256_data_cost_per_block: 2 +hash_keccak256_cost_base: 52 +hash_keccak256_data_cost_per_byte: 2 +hash_keccak256_data_cost_per_block: 2 +group_ops_bls12381_decode_scalar_cost: 52 +group_ops_bls12381_decode_g1_cost: 52 +group_ops_bls12381_decode_g2_cost: 52 +group_ops_bls12381_decode_gt_cost: 52 +group_ops_bls12381_scalar_add_cost: 52 +group_ops_bls12381_g1_add_cost: 52 +group_ops_bls12381_g2_add_cost: 52 +group_ops_bls12381_gt_add_cost: 52 +group_ops_bls12381_scalar_sub_cost: 52 +group_ops_bls12381_g1_sub_cost: 52 +group_ops_bls12381_g2_sub_cost: 52 +group_ops_bls12381_gt_sub_cost: 52 +group_ops_bls12381_scalar_mul_cost: 52 +group_ops_bls12381_g1_mul_cost: 52 +group_ops_bls12381_g2_mul_cost: 52 +group_ops_bls12381_gt_mul_cost: 52 +group_ops_bls12381_scalar_div_cost: 52 +group_ops_bls12381_g1_div_cost: 52 +group_ops_bls12381_g2_div_cost: 52 +group_ops_bls12381_gt_div_cost: 52 +group_ops_bls12381_g1_hash_to_base_cost: 52 +group_ops_bls12381_g2_hash_to_base_cost: 52 +group_ops_bls12381_g1_hash_to_cost_per_byte: 2 +group_ops_bls12381_g2_hash_to_cost_per_byte: 2 +group_ops_bls12381_g1_msm_base_cost: 52 +group_ops_bls12381_g2_msm_base_cost: 52 +group_ops_bls12381_g1_msm_base_cost_per_input: 52 +group_ops_bls12381_g2_msm_base_cost_per_input: 52 +group_ops_bls12381_msm_max_len: 32 +group_ops_bls12381_pairing_cost: 52 +hmac_hmac_sha3_256_cost_base: 52 +hmac_hmac_sha3_256_input_cost_per_byte: 2 +hmac_hmac_sha3_256_input_cost_per_block: 2 +check_zklogin_id_cost_base: 200 +check_zklogin_issuer_cost_base: 200 +bcs_per_byte_serialized_cost: 2 +bcs_legacy_min_output_size_cost: 1 +bcs_failure_cost: 52 +hash_sha2_256_base_cost: 52 +hash_sha2_256_per_byte_cost: 2 +hash_sha2_256_legacy_min_input_len_cost: 1 +hash_sha3_256_base_cost: 52 +hash_sha3_256_per_byte_cost: 2 +hash_sha3_256_legacy_min_input_len_cost: 1 +type_name_get_base_cost: 52 +type_name_get_per_byte_cost: 2 +string_check_utf8_base_cost: 52 +string_check_utf8_per_byte_cost: 2 +string_is_char_boundary_base_cost: 52 +string_sub_string_base_cost: 52 +string_sub_string_per_byte_cost: 2 +string_index_of_base_cost: 52 +string_index_of_per_byte_pattern_cost: 2 +string_index_of_per_byte_searched_cost: 2 +vector_empty_base_cost: 52 +vector_length_base_cost: 52 +vector_push_back_base_cost: 52 +vector_push_back_legacy_per_abstract_memory_unit_cost: 2 +vector_borrow_base_cost: 52 +vector_pop_back_base_cost: 52 +vector_destroy_empty_base_cost: 52 +vector_swap_base_cost: 52 +debug_print_base_cost: 52 +debug_print_stack_trace_base_cost: 52 +execution_version: 1 +consensus_bad_nodes_stake_threshold: 20 +max_jwk_votes_per_validator_per_epoch: 240 +max_age_of_jwk_in_epochs: 1 +random_beacon_reduction_allowed_delta: 800 +random_beacon_reduction_lower_bound: 1000 +random_beacon_dkg_timeout_round: 3000 +random_beacon_min_round_interval_ms: 500 +random_beacon_dkg_version: 1 +consensus_max_transaction_size_bytes: 262144 +consensus_max_transactions_in_block_bytes: 524288 +consensus_max_num_transactions_in_block: 512 +max_deferral_rounds_for_congestion_control: 10 +min_checkpoint_interval_ms: 200 +checkpoint_summary_version_specific_data: 1 +max_soft_bundle_size: 5 +bridge_should_try_to_finalize_committee: false +max_accumulated_txn_cost_per_object_in_mysticeti_commit: 10 diff --git a/crates/iota-protocol-config/src/snapshots/iota_protocol_config__test__Testnet_version_2.snap b/crates/iota-protocol-config/src/snapshots/iota_protocol_config__test__Testnet_version_2.snap new file mode 100644 index 00000000000..89cf049133a --- /dev/null +++ b/crates/iota-protocol-config/src/snapshots/iota_protocol_config__test__Testnet_version_2.snap @@ -0,0 +1,270 @@ +--- +source: crates/iota-protocol-config/src/lib.rs +expression: "ProtocolConfig::get_for_version(cur, *chain_id)" +snapshot_kind: text +--- +version: 2 +feature_flags: + consensus_transaction_ordering: ByGasPrice + per_object_congestion_control_mode: TotalTxCount + zklogin_max_epoch_upper_bound_delta: 30 +max_tx_size_bytes: 131072 +max_input_objects: 2048 +max_size_written_objects: 5000000 +max_size_written_objects_system_tx: 50000000 +max_serialized_tx_effects_size_bytes: 524288 +max_serialized_tx_effects_size_bytes_system_tx: 8388608 +max_gas_payment_objects: 256 +max_modules_in_publish: 64 +max_package_dependencies: 32 +max_arguments: 512 +max_type_arguments: 16 +max_type_argument_depth: 16 +max_pure_argument_size: 16384 +max_programmable_tx_commands: 1024 +move_binary_format_version: 7 +min_move_binary_format_version: 6 +binary_module_handles: 100 +binary_struct_handles: 300 +binary_function_handles: 1500 +binary_function_instantiations: 750 +binary_signatures: 1000 +binary_constant_pool: 4000 +binary_identifiers: 10000 +binary_address_identifiers: 100 +binary_struct_defs: 200 +binary_struct_def_instantiations: 100 +binary_function_defs: 1000 +binary_field_handles: 500 +binary_field_instantiations: 250 +binary_friend_decls: 100 +max_move_object_size: 256000 +max_move_package_size: 102400 +max_publish_or_upgrade_per_ptb: 5 +max_tx_gas: 50000000000 +max_gas_price: 100000 +max_gas_computation_bucket: 5000000 +gas_rounding_step: 1000 +max_loop_depth: 5 +max_generic_instantiation_length: 32 +max_function_parameters: 128 +max_basic_blocks: 1024 +max_value_stack_size: 1024 +max_type_nodes: 256 +max_push_size: 10000 +max_struct_definitions: 200 +max_function_definitions: 1000 +max_fields_in_struct: 32 +max_dependency_depth: 100 +max_num_event_emit: 1024 +max_num_new_move_object_ids: 2048 +max_num_new_move_object_ids_system_tx: 32768 +max_num_deleted_move_object_ids: 2048 +max_num_deleted_move_object_ids_system_tx: 32768 +max_num_transferred_move_object_ids: 2048 +max_num_transferred_move_object_ids_system_tx: 32768 +max_event_emit_size: 256000 +max_event_emit_size_total: 65536000 +max_move_vector_len: 262144 +max_move_identifier_len: 128 +max_move_value_depth: 128 +max_back_edges_per_function: 10000 +max_back_edges_per_module: 10000 +max_verifier_meter_ticks_per_function: 16000000 +max_meter_ticks_per_module: 16000000 +max_meter_ticks_per_package: 16000000 +object_runtime_max_num_cached_objects: 1000 +object_runtime_max_num_cached_objects_system_tx: 16000 +object_runtime_max_num_store_entries: 1000 +object_runtime_max_num_store_entries_system_tx: 16000 +base_tx_cost_fixed: 1000 +package_publish_cost_fixed: 1000 +base_tx_cost_per_byte: 0 +package_publish_cost_per_byte: 80 +obj_access_cost_read_per_byte: 15 +obj_access_cost_mutate_per_byte: 40 +obj_access_cost_delete_per_byte: 40 +obj_access_cost_verify_per_byte: 200 +gas_model_version: 1 +obj_data_cost_refundable: 100 +obj_metadata_cost_non_refundable: 50 +storage_rebate_rate: 10000 +reward_slashing_rate: 10000 +storage_gas_price: 76 +validator_target_reward: 767000000000000 +max_transactions_per_checkpoint: 10000 +max_checkpoint_size_bytes: 31457280 +buffer_stake_for_protocol_upgrade_bps: 5000 +address_from_bytes_cost_base: 52 +address_to_u256_cost_base: 52 +address_from_u256_cost_base: 52 +config_read_setting_impl_cost_base: 100 +config_read_setting_impl_cost_per_byte: 40 +dynamic_field_hash_type_and_key_cost_base: 100 +dynamic_field_hash_type_and_key_type_cost_per_byte: 2 +dynamic_field_hash_type_and_key_value_cost_per_byte: 2 +dynamic_field_hash_type_and_key_type_tag_cost_per_byte: 2 +dynamic_field_add_child_object_cost_base: 100 +dynamic_field_add_child_object_type_cost_per_byte: 10 +dynamic_field_add_child_object_value_cost_per_byte: 10 +dynamic_field_add_child_object_struct_tag_cost_per_byte: 10 +dynamic_field_borrow_child_object_cost_base: 100 +dynamic_field_borrow_child_object_child_ref_cost_per_byte: 10 +dynamic_field_borrow_child_object_type_cost_per_byte: 10 +dynamic_field_remove_child_object_cost_base: 100 +dynamic_field_remove_child_object_child_cost_per_byte: 2 +dynamic_field_remove_child_object_type_cost_per_byte: 2 +dynamic_field_has_child_object_cost_base: 100 +dynamic_field_has_child_object_with_ty_cost_base: 100 +dynamic_field_has_child_object_with_ty_type_cost_per_byte: 2 +dynamic_field_has_child_object_with_ty_type_tag_cost_per_byte: 2 +event_emit_cost_base: 52 +event_emit_value_size_derivation_cost_per_byte: 2 +event_emit_tag_size_derivation_cost_per_byte: 5 +event_emit_output_cost_per_byte: 10 +object_borrow_uid_cost_base: 52 +object_delete_impl_cost_base: 52 +object_record_new_uid_cost_base: 52 +transfer_transfer_internal_cost_base: 52 +transfer_freeze_object_cost_base: 52 +transfer_share_object_cost_base: 52 +transfer_receive_object_cost_base: 52 +tx_context_derive_id_cost_base: 52 +types_is_one_time_witness_cost_base: 52 +types_is_one_time_witness_type_tag_cost_per_byte: 2 +types_is_one_time_witness_type_cost_per_byte: 2 +validator_validate_metadata_cost_base: 52 +validator_validate_metadata_data_cost_per_byte: 2 +crypto_invalid_arguments_cost: 100 +bls12381_bls12381_min_sig_verify_cost_base: 52 +bls12381_bls12381_min_sig_verify_msg_cost_per_byte: 2 +bls12381_bls12381_min_sig_verify_msg_cost_per_block: 2 +bls12381_bls12381_min_pk_verify_cost_base: 52 +bls12381_bls12381_min_pk_verify_msg_cost_per_byte: 2 +bls12381_bls12381_min_pk_verify_msg_cost_per_block: 2 +ecdsa_k1_ecrecover_keccak256_cost_base: 52 +ecdsa_k1_ecrecover_keccak256_msg_cost_per_byte: 2 +ecdsa_k1_ecrecover_keccak256_msg_cost_per_block: 2 +ecdsa_k1_ecrecover_sha256_cost_base: 52 +ecdsa_k1_ecrecover_sha256_msg_cost_per_byte: 2 +ecdsa_k1_ecrecover_sha256_msg_cost_per_block: 2 +ecdsa_k1_decompress_pubkey_cost_base: 52 +ecdsa_k1_secp256k1_verify_keccak256_cost_base: 52 +ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_byte: 2 +ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_block: 2 +ecdsa_k1_secp256k1_verify_sha256_cost_base: 52 +ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_byte: 2 +ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_block: 2 +ecdsa_r1_ecrecover_keccak256_cost_base: 52 +ecdsa_r1_ecrecover_keccak256_msg_cost_per_byte: 2 +ecdsa_r1_ecrecover_keccak256_msg_cost_per_block: 2 +ecdsa_r1_ecrecover_sha256_cost_base: 52 +ecdsa_r1_ecrecover_sha256_msg_cost_per_byte: 2 +ecdsa_r1_ecrecover_sha256_msg_cost_per_block: 2 +ecdsa_r1_secp256r1_verify_keccak256_cost_base: 52 +ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_byte: 2 +ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_block: 2 +ecdsa_r1_secp256r1_verify_sha256_cost_base: 52 +ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_byte: 2 +ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_block: 2 +ecvrf_ecvrf_verify_cost_base: 52 +ecvrf_ecvrf_verify_alpha_string_cost_per_byte: 2 +ecvrf_ecvrf_verify_alpha_string_cost_per_block: 2 +ed25519_ed25519_verify_cost_base: 52 +ed25519_ed25519_verify_msg_cost_per_byte: 2 +ed25519_ed25519_verify_msg_cost_per_block: 2 +groth16_prepare_verifying_key_bls12381_cost_base: 52 +groth16_prepare_verifying_key_bn254_cost_base: 52 +groth16_verify_groth16_proof_internal_bls12381_cost_base: 52 +groth16_verify_groth16_proof_internal_bls12381_cost_per_public_input: 2 +groth16_verify_groth16_proof_internal_bn254_cost_base: 52 +groth16_verify_groth16_proof_internal_bn254_cost_per_public_input: 2 +groth16_verify_groth16_proof_internal_public_input_cost_per_byte: 2 +hash_blake2b256_cost_base: 52 +hash_blake2b256_data_cost_per_byte: 2 +hash_blake2b256_data_cost_per_block: 2 +hash_keccak256_cost_base: 52 +hash_keccak256_data_cost_per_byte: 2 +hash_keccak256_data_cost_per_block: 2 +group_ops_bls12381_decode_scalar_cost: 52 +group_ops_bls12381_decode_g1_cost: 52 +group_ops_bls12381_decode_g2_cost: 52 +group_ops_bls12381_decode_gt_cost: 52 +group_ops_bls12381_scalar_add_cost: 52 +group_ops_bls12381_g1_add_cost: 52 +group_ops_bls12381_g2_add_cost: 52 +group_ops_bls12381_gt_add_cost: 52 +group_ops_bls12381_scalar_sub_cost: 52 +group_ops_bls12381_g1_sub_cost: 52 +group_ops_bls12381_g2_sub_cost: 52 +group_ops_bls12381_gt_sub_cost: 52 +group_ops_bls12381_scalar_mul_cost: 52 +group_ops_bls12381_g1_mul_cost: 52 +group_ops_bls12381_g2_mul_cost: 52 +group_ops_bls12381_gt_mul_cost: 52 +group_ops_bls12381_scalar_div_cost: 52 +group_ops_bls12381_g1_div_cost: 52 +group_ops_bls12381_g2_div_cost: 52 +group_ops_bls12381_gt_div_cost: 52 +group_ops_bls12381_g1_hash_to_base_cost: 52 +group_ops_bls12381_g2_hash_to_base_cost: 52 +group_ops_bls12381_g1_hash_to_cost_per_byte: 2 +group_ops_bls12381_g2_hash_to_cost_per_byte: 2 +group_ops_bls12381_g1_msm_base_cost: 52 +group_ops_bls12381_g2_msm_base_cost: 52 +group_ops_bls12381_g1_msm_base_cost_per_input: 52 +group_ops_bls12381_g2_msm_base_cost_per_input: 52 +group_ops_bls12381_msm_max_len: 32 +group_ops_bls12381_pairing_cost: 52 +hmac_hmac_sha3_256_cost_base: 52 +hmac_hmac_sha3_256_input_cost_per_byte: 2 +hmac_hmac_sha3_256_input_cost_per_block: 2 +check_zklogin_id_cost_base: 200 +check_zklogin_issuer_cost_base: 200 +bcs_per_byte_serialized_cost: 2 +bcs_legacy_min_output_size_cost: 1 +bcs_failure_cost: 52 +hash_sha2_256_base_cost: 52 +hash_sha2_256_per_byte_cost: 2 +hash_sha2_256_legacy_min_input_len_cost: 1 +hash_sha3_256_base_cost: 52 +hash_sha3_256_per_byte_cost: 2 +hash_sha3_256_legacy_min_input_len_cost: 1 +type_name_get_base_cost: 52 +type_name_get_per_byte_cost: 2 +string_check_utf8_base_cost: 52 +string_check_utf8_per_byte_cost: 2 +string_is_char_boundary_base_cost: 52 +string_sub_string_base_cost: 52 +string_sub_string_per_byte_cost: 2 +string_index_of_base_cost: 52 +string_index_of_per_byte_pattern_cost: 2 +string_index_of_per_byte_searched_cost: 2 +vector_empty_base_cost: 52 +vector_length_base_cost: 52 +vector_push_back_base_cost: 52 +vector_push_back_legacy_per_abstract_memory_unit_cost: 2 +vector_borrow_base_cost: 52 +vector_pop_back_base_cost: 52 +vector_destroy_empty_base_cost: 52 +vector_swap_base_cost: 52 +debug_print_base_cost: 52 +debug_print_stack_trace_base_cost: 52 +execution_version: 1 +consensus_bad_nodes_stake_threshold: 20 +max_jwk_votes_per_validator_per_epoch: 240 +max_age_of_jwk_in_epochs: 1 +random_beacon_reduction_allowed_delta: 800 +random_beacon_reduction_lower_bound: 1000 +random_beacon_dkg_timeout_round: 3000 +random_beacon_min_round_interval_ms: 500 +random_beacon_dkg_version: 1 +consensus_max_transaction_size_bytes: 262144 +consensus_max_transactions_in_block_bytes: 524288 +consensus_max_num_transactions_in_block: 512 +max_deferral_rounds_for_congestion_control: 10 +min_checkpoint_interval_ms: 200 +checkpoint_summary_version_specific_data: 1 +max_soft_bundle_size: 5 +bridge_should_try_to_finalize_committee: true +max_accumulated_txn_cost_per_object_in_mysticeti_commit: 10 diff --git a/crates/iota-protocol-config/src/snapshots/iota_protocol_config__test__version_2.snap b/crates/iota-protocol-config/src/snapshots/iota_protocol_config__test__version_2.snap new file mode 100644 index 00000000000..e23a99f7062 --- /dev/null +++ b/crates/iota-protocol-config/src/snapshots/iota_protocol_config__test__version_2.snap @@ -0,0 +1,278 @@ +--- +source: crates/iota-protocol-config/src/lib.rs +expression: "ProtocolConfig::get_for_version(cur, *chain_id)" +snapshot_kind: text +--- +version: 2 +feature_flags: + consensus_transaction_ordering: ByGasPrice + enable_poseidon: true + enable_group_ops_native_function_msm: true + per_object_congestion_control_mode: TotalTxCount + zklogin_max_epoch_upper_bound_delta: 30 + enable_vdf: true + passkey_auth: true +max_tx_size_bytes: 131072 +max_input_objects: 2048 +max_size_written_objects: 5000000 +max_size_written_objects_system_tx: 50000000 +max_serialized_tx_effects_size_bytes: 524288 +max_serialized_tx_effects_size_bytes_system_tx: 8388608 +max_gas_payment_objects: 256 +max_modules_in_publish: 64 +max_package_dependencies: 32 +max_arguments: 512 +max_type_arguments: 16 +max_type_argument_depth: 16 +max_pure_argument_size: 16384 +max_programmable_tx_commands: 1024 +move_binary_format_version: 7 +min_move_binary_format_version: 6 +binary_module_handles: 100 +binary_struct_handles: 300 +binary_function_handles: 1500 +binary_function_instantiations: 750 +binary_signatures: 1000 +binary_constant_pool: 4000 +binary_identifiers: 10000 +binary_address_identifiers: 100 +binary_struct_defs: 200 +binary_struct_def_instantiations: 100 +binary_function_defs: 1000 +binary_field_handles: 500 +binary_field_instantiations: 250 +binary_friend_decls: 100 +max_move_object_size: 256000 +max_move_package_size: 102400 +max_publish_or_upgrade_per_ptb: 5 +max_tx_gas: 50000000000 +max_gas_price: 100000 +max_gas_computation_bucket: 5000000 +gas_rounding_step: 1000 +max_loop_depth: 5 +max_generic_instantiation_length: 32 +max_function_parameters: 128 +max_basic_blocks: 1024 +max_value_stack_size: 1024 +max_type_nodes: 256 +max_push_size: 10000 +max_struct_definitions: 200 +max_function_definitions: 1000 +max_fields_in_struct: 32 +max_dependency_depth: 100 +max_num_event_emit: 1024 +max_num_new_move_object_ids: 2048 +max_num_new_move_object_ids_system_tx: 32768 +max_num_deleted_move_object_ids: 2048 +max_num_deleted_move_object_ids_system_tx: 32768 +max_num_transferred_move_object_ids: 2048 +max_num_transferred_move_object_ids_system_tx: 32768 +max_event_emit_size: 256000 +max_event_emit_size_total: 65536000 +max_move_vector_len: 262144 +max_move_identifier_len: 128 +max_move_value_depth: 128 +max_back_edges_per_function: 10000 +max_back_edges_per_module: 10000 +max_verifier_meter_ticks_per_function: 16000000 +max_meter_ticks_per_module: 16000000 +max_meter_ticks_per_package: 16000000 +object_runtime_max_num_cached_objects: 1000 +object_runtime_max_num_cached_objects_system_tx: 16000 +object_runtime_max_num_store_entries: 1000 +object_runtime_max_num_store_entries_system_tx: 16000 +base_tx_cost_fixed: 1000 +package_publish_cost_fixed: 1000 +base_tx_cost_per_byte: 0 +package_publish_cost_per_byte: 80 +obj_access_cost_read_per_byte: 15 +obj_access_cost_mutate_per_byte: 40 +obj_access_cost_delete_per_byte: 40 +obj_access_cost_verify_per_byte: 200 +gas_model_version: 1 +obj_data_cost_refundable: 100 +obj_metadata_cost_non_refundable: 50 +storage_rebate_rate: 10000 +reward_slashing_rate: 10000 +storage_gas_price: 76 +validator_target_reward: 767000000000000 +max_transactions_per_checkpoint: 10000 +max_checkpoint_size_bytes: 31457280 +buffer_stake_for_protocol_upgrade_bps: 5000 +address_from_bytes_cost_base: 52 +address_to_u256_cost_base: 52 +address_from_u256_cost_base: 52 +config_read_setting_impl_cost_base: 100 +config_read_setting_impl_cost_per_byte: 40 +dynamic_field_hash_type_and_key_cost_base: 100 +dynamic_field_hash_type_and_key_type_cost_per_byte: 2 +dynamic_field_hash_type_and_key_value_cost_per_byte: 2 +dynamic_field_hash_type_and_key_type_tag_cost_per_byte: 2 +dynamic_field_add_child_object_cost_base: 100 +dynamic_field_add_child_object_type_cost_per_byte: 10 +dynamic_field_add_child_object_value_cost_per_byte: 10 +dynamic_field_add_child_object_struct_tag_cost_per_byte: 10 +dynamic_field_borrow_child_object_cost_base: 100 +dynamic_field_borrow_child_object_child_ref_cost_per_byte: 10 +dynamic_field_borrow_child_object_type_cost_per_byte: 10 +dynamic_field_remove_child_object_cost_base: 100 +dynamic_field_remove_child_object_child_cost_per_byte: 2 +dynamic_field_remove_child_object_type_cost_per_byte: 2 +dynamic_field_has_child_object_cost_base: 100 +dynamic_field_has_child_object_with_ty_cost_base: 100 +dynamic_field_has_child_object_with_ty_type_cost_per_byte: 2 +dynamic_field_has_child_object_with_ty_type_tag_cost_per_byte: 2 +event_emit_cost_base: 52 +event_emit_value_size_derivation_cost_per_byte: 2 +event_emit_tag_size_derivation_cost_per_byte: 5 +event_emit_output_cost_per_byte: 10 +object_borrow_uid_cost_base: 52 +object_delete_impl_cost_base: 52 +object_record_new_uid_cost_base: 52 +transfer_transfer_internal_cost_base: 52 +transfer_freeze_object_cost_base: 52 +transfer_share_object_cost_base: 52 +transfer_receive_object_cost_base: 52 +tx_context_derive_id_cost_base: 52 +types_is_one_time_witness_cost_base: 52 +types_is_one_time_witness_type_tag_cost_per_byte: 2 +types_is_one_time_witness_type_cost_per_byte: 2 +validator_validate_metadata_cost_base: 52 +validator_validate_metadata_data_cost_per_byte: 2 +crypto_invalid_arguments_cost: 100 +bls12381_bls12381_min_sig_verify_cost_base: 52 +bls12381_bls12381_min_sig_verify_msg_cost_per_byte: 2 +bls12381_bls12381_min_sig_verify_msg_cost_per_block: 2 +bls12381_bls12381_min_pk_verify_cost_base: 52 +bls12381_bls12381_min_pk_verify_msg_cost_per_byte: 2 +bls12381_bls12381_min_pk_verify_msg_cost_per_block: 2 +ecdsa_k1_ecrecover_keccak256_cost_base: 52 +ecdsa_k1_ecrecover_keccak256_msg_cost_per_byte: 2 +ecdsa_k1_ecrecover_keccak256_msg_cost_per_block: 2 +ecdsa_k1_ecrecover_sha256_cost_base: 52 +ecdsa_k1_ecrecover_sha256_msg_cost_per_byte: 2 +ecdsa_k1_ecrecover_sha256_msg_cost_per_block: 2 +ecdsa_k1_decompress_pubkey_cost_base: 52 +ecdsa_k1_secp256k1_verify_keccak256_cost_base: 52 +ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_byte: 2 +ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_block: 2 +ecdsa_k1_secp256k1_verify_sha256_cost_base: 52 +ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_byte: 2 +ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_block: 2 +ecdsa_r1_ecrecover_keccak256_cost_base: 52 +ecdsa_r1_ecrecover_keccak256_msg_cost_per_byte: 2 +ecdsa_r1_ecrecover_keccak256_msg_cost_per_block: 2 +ecdsa_r1_ecrecover_sha256_cost_base: 52 +ecdsa_r1_ecrecover_sha256_msg_cost_per_byte: 2 +ecdsa_r1_ecrecover_sha256_msg_cost_per_block: 2 +ecdsa_r1_secp256r1_verify_keccak256_cost_base: 52 +ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_byte: 2 +ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_block: 2 +ecdsa_r1_secp256r1_verify_sha256_cost_base: 52 +ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_byte: 2 +ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_block: 2 +ecvrf_ecvrf_verify_cost_base: 52 +ecvrf_ecvrf_verify_alpha_string_cost_per_byte: 2 +ecvrf_ecvrf_verify_alpha_string_cost_per_block: 2 +ed25519_ed25519_verify_cost_base: 52 +ed25519_ed25519_verify_msg_cost_per_byte: 2 +ed25519_ed25519_verify_msg_cost_per_block: 2 +groth16_prepare_verifying_key_bls12381_cost_base: 52 +groth16_prepare_verifying_key_bn254_cost_base: 52 +groth16_verify_groth16_proof_internal_bls12381_cost_base: 52 +groth16_verify_groth16_proof_internal_bls12381_cost_per_public_input: 2 +groth16_verify_groth16_proof_internal_bn254_cost_base: 52 +groth16_verify_groth16_proof_internal_bn254_cost_per_public_input: 2 +groth16_verify_groth16_proof_internal_public_input_cost_per_byte: 2 +hash_blake2b256_cost_base: 52 +hash_blake2b256_data_cost_per_byte: 2 +hash_blake2b256_data_cost_per_block: 2 +hash_keccak256_cost_base: 52 +hash_keccak256_data_cost_per_byte: 2 +hash_keccak256_data_cost_per_block: 2 +poseidon_bn254_cost_base: 260 +poseidon_bn254_cost_per_block: 10 +group_ops_bls12381_decode_scalar_cost: 52 +group_ops_bls12381_decode_g1_cost: 52 +group_ops_bls12381_decode_g2_cost: 52 +group_ops_bls12381_decode_gt_cost: 52 +group_ops_bls12381_scalar_add_cost: 52 +group_ops_bls12381_g1_add_cost: 52 +group_ops_bls12381_g2_add_cost: 52 +group_ops_bls12381_gt_add_cost: 52 +group_ops_bls12381_scalar_sub_cost: 52 +group_ops_bls12381_g1_sub_cost: 52 +group_ops_bls12381_g2_sub_cost: 52 +group_ops_bls12381_gt_sub_cost: 52 +group_ops_bls12381_scalar_mul_cost: 52 +group_ops_bls12381_g1_mul_cost: 52 +group_ops_bls12381_g2_mul_cost: 52 +group_ops_bls12381_gt_mul_cost: 52 +group_ops_bls12381_scalar_div_cost: 52 +group_ops_bls12381_g1_div_cost: 52 +group_ops_bls12381_g2_div_cost: 52 +group_ops_bls12381_gt_div_cost: 52 +group_ops_bls12381_g1_hash_to_base_cost: 52 +group_ops_bls12381_g2_hash_to_base_cost: 52 +group_ops_bls12381_g1_hash_to_cost_per_byte: 2 +group_ops_bls12381_g2_hash_to_cost_per_byte: 2 +group_ops_bls12381_g1_msm_base_cost: 52 +group_ops_bls12381_g2_msm_base_cost: 52 +group_ops_bls12381_g1_msm_base_cost_per_input: 52 +group_ops_bls12381_g2_msm_base_cost_per_input: 52 +group_ops_bls12381_msm_max_len: 32 +group_ops_bls12381_pairing_cost: 52 +hmac_hmac_sha3_256_cost_base: 52 +hmac_hmac_sha3_256_input_cost_per_byte: 2 +hmac_hmac_sha3_256_input_cost_per_block: 2 +check_zklogin_id_cost_base: 200 +check_zklogin_issuer_cost_base: 200 +vdf_verify_vdf_cost: 1500 +vdf_hash_to_input_cost: 100 +bcs_per_byte_serialized_cost: 2 +bcs_legacy_min_output_size_cost: 1 +bcs_failure_cost: 52 +hash_sha2_256_base_cost: 52 +hash_sha2_256_per_byte_cost: 2 +hash_sha2_256_legacy_min_input_len_cost: 1 +hash_sha3_256_base_cost: 52 +hash_sha3_256_per_byte_cost: 2 +hash_sha3_256_legacy_min_input_len_cost: 1 +type_name_get_base_cost: 52 +type_name_get_per_byte_cost: 2 +string_check_utf8_base_cost: 52 +string_check_utf8_per_byte_cost: 2 +string_is_char_boundary_base_cost: 52 +string_sub_string_base_cost: 52 +string_sub_string_per_byte_cost: 2 +string_index_of_base_cost: 52 +string_index_of_per_byte_pattern_cost: 2 +string_index_of_per_byte_searched_cost: 2 +vector_empty_base_cost: 52 +vector_length_base_cost: 52 +vector_push_back_base_cost: 52 +vector_push_back_legacy_per_abstract_memory_unit_cost: 2 +vector_borrow_base_cost: 52 +vector_pop_back_base_cost: 52 +vector_destroy_empty_base_cost: 52 +vector_swap_base_cost: 52 +debug_print_base_cost: 52 +debug_print_stack_trace_base_cost: 52 +execution_version: 1 +consensus_bad_nodes_stake_threshold: 20 +max_jwk_votes_per_validator_per_epoch: 240 +max_age_of_jwk_in_epochs: 1 +random_beacon_reduction_allowed_delta: 800 +random_beacon_reduction_lower_bound: 1000 +random_beacon_dkg_timeout_round: 3000 +random_beacon_min_round_interval_ms: 500 +random_beacon_dkg_version: 1 +consensus_max_transaction_size_bytes: 262144 +consensus_max_transactions_in_block_bytes: 524288 +consensus_max_num_transactions_in_block: 512 +max_deferral_rounds_for_congestion_control: 10 +min_checkpoint_interval_ms: 200 +checkpoint_summary_version_specific_data: 1 +max_soft_bundle_size: 5 +bridge_should_try_to_finalize_committee: true +max_accumulated_txn_cost_per_object_in_mysticeti_commit: 10 diff --git a/crates/iota-swarm-config/tests/snapshots/snapshot_tests__genesis_config_snapshot_matches.snap b/crates/iota-swarm-config/tests/snapshots/snapshot_tests__genesis_config_snapshot_matches.snap index 560f4a795b4..1011bf3fa69 100644 --- a/crates/iota-swarm-config/tests/snapshots/snapshot_tests__genesis_config_snapshot_matches.snap +++ b/crates/iota-swarm-config/tests/snapshots/snapshot_tests__genesis_config_snapshot_matches.snap @@ -1,12 +1,13 @@ --- source: crates/iota-swarm-config/tests/snapshot_tests.rs expression: genesis_config +snapshot_kind: text --- ssfn_config_info: ~ validator_config_info: ~ parameters: chain_start_timestamp_ms: 0 - protocol_version: 1 + protocol_version: 2 allow_insertion_of_extra_objects: true epoch_duration_ms: 86400000 accounts: diff --git a/crates/iota-swarm-config/tests/snapshots/snapshot_tests__populated_genesis_snapshot_matches-2.snap b/crates/iota-swarm-config/tests/snapshots/snapshot_tests__populated_genesis_snapshot_matches-2.snap index 147ad24674c..c4a877d419f 100644 --- a/crates/iota-swarm-config/tests/snapshots/snapshot_tests__populated_genesis_snapshot_matches-2.snap +++ b/crates/iota-swarm-config/tests/snapshots/snapshot_tests__populated_genesis_snapshot_matches-2.snap @@ -3,12 +3,12 @@ source: crates/iota-swarm-config/tests/snapshot_tests.rs expression: genesis.iota_system_object().into_genesis_version_for_tooling() --- epoch: 0 -protocol_version: 1 +protocol_version: 2 system_state_version: 1 iota_treasury_cap: inner: id: - id: "0x934856dbf1a6032f66ee5ff2e959767c8efc379e69bd3087e78cdb051df2f876" + id: "0xc0a3df051577bcc903e0199da102f7f6f2a91efd10b974cf02abf758c940b2c4" total_supply: value: "751500000000000000" validators: @@ -244,13 +244,13 @@ validators: next_epoch_primary_address: ~ extra_fields: id: - id: "0xe8024a1572d13ddd22144a52f5bb90f9d93f0057d8a7f6886833a8558c5f42dc" + id: "0xaed6692f9414d47c421b568a78db64aad24df4ec5f907da2df9691ca8f8d8060" size: 0 voting_power: 10000 - operation_cap_id: "0xced7229b5da6ab4e03dbd482bfc0d31444f1530d0ae1020d55531f80051034de" + operation_cap_id: "0x27c7b6a423462fd937f9592b0a6460552d6dbe39529af7b31c1078d4a4278cee" gas_price: 1000 staking_pool: - id: "0x7bc82accfac70f4e347e02c215f509b1b22a1ac63f5edd784d16d0e95e1e3840" + id: "0x6d23d6ca509804be5b4366dfc8999117cee38954b222aa1869d2cd544caf65e1" activation_epoch: 0 deactivation_epoch: ~ iota_balance: 1500000000000000 @@ -258,14 +258,14 @@ validators: value: 0 pool_token_balance: 1500000000000000 exchange_rates: - id: "0xe82a41af6638521838d31f97bc54c191f0ce1a1781c35ac3d9a4e8499494e0c2" + id: "0x40c803c53c8e36a656201bc8742de9e8fac5fa2ed6b26b66e2698e1f221d6558" size: 1 pending_stake: 0 pending_total_iota_withdraw: 0 pending_pool_token_withdraw: 0 extra_fields: id: - id: "0x3589b1f00ea0f4019cd46b56d29b2286c1ec783e52e84415008747fb1d8c9043" + id: "0x783db4410eb618c9d4c739a0e8045a9ec4724f7ec4aeed22a298d682abffe508" size: 0 commission_rate: 200 next_epoch_stake: 1500000000000000 @@ -273,27 +273,27 @@ validators: next_epoch_commission_rate: 200 extra_fields: id: - id: "0x83acc826eb238b984c7bae9e964952dd72902a031d1f555cc4b0676495fc930e" + id: "0x73293ec9fb51bd0ad2cc3ec7b735fc274dbbef266c2e5a49425ab3940c494fb6" size: 0 pending_active_validators: contents: - id: "0xb98e2c63a08a2c27b9d14288105e784144c65dfdb081951e9794d385dcdf378b" + id: "0xd66fd1d251b3d564a7426c73cc67ca639b7423090081fcf79eb3dc0b40f63a7c" size: 0 pending_removals: [] staking_pool_mappings: - id: "0x17d4a3fab108e0275cfbd2b1966444e99419185643d340b5d1b425faab103cee" + id: "0x014b69d82717bfeb39f32586c065cad188d0fedc5c071bdcc710aaab2a245b7a" size: 1 inactive_validators: - id: "0xe7da2643c898e967489e2227ed2d36a0c8db61410e937dcfea7d915065736bc8" + id: "0x701c488df2bbfb7eae3ec279ad32702870a5750e6cd7f514c781c0859e916424" size: 0 validator_candidates: - id: "0x7c28f48d2427b54a9b018b62a2caaadd39ce209d779396f8ee23a4f7fc8d4901" + id: "0x39c06666a86631d172a296315d8c536add0cb612764a14be70ba269593527253" size: 0 at_risk_validators: contents: [] extra_fields: id: - id: "0x520c8bed0efe1861657f5b33eea0745aeeabfd4d1887172831a99c4fed274b4d" + id: "0x3db8221a6b41c7a07005b9cf9ed2b71cb45a0512181ed26e45422b1a56842a86" size: 0 storage_fund: total_object_storage_rebates: @@ -310,7 +310,7 @@ parameters: validator_low_stake_grace_period: 7 extra_fields: id: - id: "0x4b729e195cfcf8f19c9508866d464aea19e48db9a721114e5a6159d53abf310f" + id: "0xc3250b13a30f434b6fe6ac4f7747b761d7e06b377619f73e9c044fb6fbcb9043" size: 0 iota_system_admin_cap: dummy_field: false @@ -327,5 +327,5 @@ safe_mode_non_refundable_storage_fee: 0 epoch_start_timestamp_ms: 10 extra_fields: id: - id: "0x3ff2b204a8ce9d05936b477dbcf16285afbd069216734afbe1ae0798be0bb0e4" + id: "0x03afbe024fb0454cdd8498212b32b5c4f4000bb7335e4a54f2f1415481d68e3a" size: 0