diff --git a/Cargo.lock b/Cargo.lock index 083572718260e..9aee09e0389f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -483,6 +483,7 @@ dependencies = [ "aptos-global-constants", "aptos-management", "aptos-secure-storage", + "aptos-state-view", "aptos-temppath", "aptos-types", "aptos-vm", @@ -723,6 +724,7 @@ dependencies = [ "aptos-mempool", "aptos-metrics", "aptos-secure-storage", + "aptos-state-view", "aptos-telemetry", "aptos-temppath", "aptos-time-service", @@ -953,6 +955,11 @@ dependencies = [ "aptos-crypto", "aptos-types", "aptos-workspace-hack", + "bcs", + "move-core-types", + "serde 1.0.136", + "serde_bytes", + "serde_json", ] [[package]] @@ -2914,6 +2921,7 @@ dependencies = [ "aptos-crypto", "aptos-id-generator", "aptos-infallible", + "aptos-state-view", "aptos-temppath", "aptos-types", "aptos-vm", @@ -2980,6 +2988,7 @@ dependencies = [ "aptos-logger", "aptos-sdk", "aptos-secure-push-metrics", + "aptos-state-view", "aptos-temppath", "aptos-transaction-builder", "aptos-types", @@ -3010,6 +3019,7 @@ dependencies = [ "aptos-config", "aptos-crypto", "aptos-genesis-tool", + "aptos-state-view", "aptos-temppath", "aptos-transaction-builder", "aptos-types", @@ -3018,6 +3028,7 @@ dependencies = [ "aptosdb", "executor", "executor-types", + "move-core-types", "rand 0.8.4", "storage-interface", "storage-service", diff --git a/api/goldens/aptos_api__tests__accounts_test__test_account_state_blob_response.json b/api/goldens/aptos_api__tests__accounts_test__test_account_state_blob_response.json new file mode 100644 index 0000000000000..86df7df91af45 --- /dev/null +++ b/api/goldens/aptos_api__tests__accounts_test__test_account_state_blob_response.json @@ -0,0 +1,3307 @@ +[ + 18, + 49, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 4, + 71, + 85, + 73, + 68, + 9, + 71, + 101, + 110, + 101, + 114, + 97, + 116, + 111, + 114, + 0, + 8, + 6, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 50, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 7, + 65, + 99, + 99, + 111, + 117, + 110, + 116, + 7, + 65, + 99, + 99, + 111, + 117, + 110, + 116, + 0, + 73, + 32, + 125, + 238, + 204, + 177, + 8, + 8, + 84, + 244, + 153, + 236, + 139, + 76, + 27, + 33, + 59, + 130, + 197, + 227, + 75, + 146, + 92, + 246, + 135, + 95, + 236, + 2, + 212, + 183, + 122, + 219, + 210, + 214, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 10, + 85, + 12, + 24, + 50, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 7, + 67, + 104, + 97, + 105, + 110, + 73, + 100, + 7, + 67, + 104, + 97, + 105, + 110, + 73, + 100, + 0, + 1, + 4, + 50, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 7, + 86, + 101, + 114, + 115, + 105, + 111, + 110, + 7, + 86, + 101, + 114, + 115, + 105, + 111, + 110, + 0, + 8, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 51, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 8, + 84, + 101, + 115, + 116, + 67, + 111, + 105, + 110, + 7, + 66, + 97, + 108, + 97, + 110, + 99, + 101, + 0, + 8, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 52, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 8, + 84, + 101, + 115, + 116, + 67, + 111, + 105, + 110, + 8, + 67, + 111, + 105, + 110, + 73, + 110, + 102, + 111, + 0, + 8, + 64, + 66, + 15, + 0, + 0, + 0, + 0, + 0, + 52, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 8, + 86, + 77, + 67, + 111, + 110, + 102, + 105, + 103, + 8, + 86, + 77, + 67, + 111, + 110, + 102, + 105, + 103, + 0, + 238, + 11, + 241, + 8, + 71, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 126, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 108, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 41, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 21, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 23, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 203, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 13, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 70, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 15, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 13, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 84, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 98, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 54, + 5, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 110, + 7, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 53, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 227, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 60, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 156, + 5, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 161, + 2, + 18, + 21, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 61, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 23, + 13, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 181, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 98, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 84, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 54, + 5, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 110, + 7, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 53, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 227, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 60, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 156, + 5, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 97, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 212, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 52, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 88, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 88, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 8, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 9, + 61, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 16, + 39, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 0, + 0, + 0, + 232, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 53, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 5, + 83, + 116, + 97, + 107, + 101, + 12, + 86, + 97, + 108, + 105, + 100, + 97, + 116, + 111, + 114, + 83, + 101, + 116, + 0, + 189, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 66, + 15, + 0, + 0, + 0, + 0, + 0, + 1, + 248, + 95, + 208, + 14, + 48, + 205, + 56, + 141, + 38, + 9, + 219, + 36, + 214, + 204, + 68, + 242, + 101, + 47, + 39, + 65, + 52, + 86, + 147, + 142, + 170, + 5, + 159, + 101, + 35, + 22, + 71, + 204, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 204, + 98, + 51, + 46, + 52, + 187, + 45, + 92, + 214, + 159, + 96, + 239, + 187, + 42, + 54, + 203, + 145, + 108, + 126, + 180, + 88, + 48, + 30, + 163, + 102, + 54, + 196, + 219, + 176, + 18, + 189, + 136, + 47, + 1, + 45, + 4, + 0, + 0, + 0, + 0, + 0, + 5, + 36, + 24, + 7, + 32, + 213, + 219, + 137, + 17, + 21, + 111, + 52, + 65, + 192, + 117, + 125, + 151, + 184, + 88, + 12, + 182, + 57, + 133, + 52, + 84, + 236, + 26, + 86, + 15, + 73, + 39, + 207, + 74, + 205, + 251, + 209, + 8, + 8, + 0, + 47, + 1, + 45, + 4, + 0, + 0, + 0, + 0, + 0, + 5, + 12, + 28, + 7, + 32, + 52, + 50, + 251, + 245, + 182, + 102, + 250, + 119, + 18, + 105, + 204, + 126, + 178, + 39, + 20, + 109, + 59, + 22, + 133, + 143, + 23, + 122, + 49, + 122, + 232, + 195, + 73, + 219, + 33, + 15, + 235, + 120, + 8, + 0, + 0, + 0, + 54, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 5, + 66, + 108, + 111, + 99, + 107, + 13, + 66, + 108, + 111, + 99, + 107, + 77, + 101, + 116, + 97, + 100, + 97, + 116, + 97, + 0, + 65, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 96, + 215, + 29, + 20, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 40, + 5, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 10, + 85, + 12, + 24, + 55, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 8, + 84, + 101, + 115, + 116, + 67, + 111, + 105, + 110, + 11, + 68, + 101, + 108, + 101, + 103, + 97, + 116, + 105, + 111, + 110, + 115, + 0, + 1, + 0, + 58, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 8, + 84, + 101, + 115, + 116, + 67, + 111, + 105, + 110, + 14, + 66, + 117, + 114, + 110, + 67, + 97, + 112, + 97, + 98, + 105, + 108, + 105, + 116, + 121, + 0, + 1, + 0, + 58, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 8, + 84, + 101, + 115, + 116, + 67, + 111, + 105, + 110, + 14, + 77, + 105, + 110, + 116, + 67, + 97, + 112, + 97, + 98, + 105, + 108, + 105, + 116, + 121, + 0, + 1, + 0, + 58, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 8, + 84, + 101, + 115, + 116, + 67, + 111, + 105, + 110, + 14, + 84, + 114, + 97, + 110, + 115, + 102, + 101, + 114, + 69, + 118, + 101, + 110, + 116, + 115, + 0, + 98, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 40, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 10, + 85, + 12, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 40, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 10, + 85, + 12, + 24, + 64, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 15, + 82, + 101, + 99, + 111, + 110, + 102, + 105, + 103, + 117, + 114, + 97, + 116, + 105, + 111, + 110, + 13, + 67, + 111, + 110, + 102, + 105, + 103, + 117, + 114, + 97, + 116, + 105, + 111, + 110, + 0, + 65, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 40, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 10, + 85, + 12, + 24, + 66, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 15, + 67, + 111, + 110, + 115, + 101, + 110, + 115, + 117, + 115, + 67, + 111, + 110, + 102, + 105, + 103, + 15, + 67, + 111, + 110, + 115, + 101, + 110, + 115, + 117, + 115, + 67, + 111, + 110, + 102, + 105, + 103, + 0, + 20, + 19, + 1, + 1, + 1, + 10, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 20, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 67, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 7, + 65, + 99, + 99, + 111, + 117, + 110, + 116, + 24, + 67, + 104, + 97, + 105, + 110, + 83, + 112, + 101, + 99, + 105, + 102, + 105, + 99, + 65, + 99, + 99, + 111, + 117, + 110, + 116, + 73, + 110, + 102, + 111, + 0, + 146, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 7, + 65, + 99, + 99, + 111, + 117, + 110, + 116, + 15, + 115, + 99, + 114, + 105, + 112, + 116, + 95, + 112, + 114, + 111, + 108, + 111, + 103, + 117, + 101, + 15, + 109, + 111, + 100, + 117, + 108, + 101, + 95, + 112, + 114, + 111, + 108, + 111, + 103, + 117, + 101, + 17, + 119, + 114, + 105, + 116, + 101, + 115, + 101, + 116, + 95, + 112, + 114, + 111, + 108, + 111, + 103, + 117, + 101, + 27, + 109, + 117, + 108, + 116, + 105, + 95, + 97, + 103, + 101, + 110, + 116, + 95, + 115, + 99, + 114, + 105, + 112, + 116, + 95, + 112, + 114, + 111, + 108, + 111, + 103, + 117, + 101, + 8, + 101, + 112, + 105, + 108, + 111, + 103, + 117, + 101, + 17, + 119, + 114, + 105, + 116, + 101, + 115, + 101, + 116, + 95, + 101, + 112, + 105, + 108, + 111, + 103, + 117, + 101, + 0, + 68, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 9, + 84, + 105, + 109, + 101, + 115, + 116, + 97, + 109, + 112, + 23, + 67, + 117, + 114, + 114, + 101, + 110, + 116, + 84, + 105, + 109, + 101, + 77, + 105, + 99, + 114, + 111, + 115, + 101, + 99, + 111, + 110, + 100, + 115, + 0, + 8, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 90, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 27, + 84, + 114, + 97, + 110, + 115, + 97, + 99, + 116, + 105, + 111, + 110, + 80, + 117, + 98, + 108, + 105, + 115, + 104, + 105, + 110, + 103, + 79, + 112, + 116, + 105, + 111, + 110, + 27, + 84, + 114, + 97, + 110, + 115, + 97, + 99, + 116, + 105, + 111, + 110, + 80, + 117, + 98, + 108, + 105, + 115, + 104, + 105, + 110, + 103, + 79, + 112, + 116, + 105, + 111, + 110, + 0, + 2, + 0, + 1 +] diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_output_genesis_transaction.json b/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_output_genesis_transaction.json index 6889831e03c37..0e8f594684982 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_output_genesis_transaction.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_output_genesis_transaction.json @@ -2,18 +2,18 @@ { "type": "genesis_transaction", "version": "0", - "hash": "0x4b6579096b5f1e924a2e027f6ad562ad2dfa255fdc5cbebc22a8529fce2bd929", - "state_root_hash": "0xa775aacb65d6c255e1151cac68ddb18140ec210a6730ec3eadeb48c187e00918", + "hash": "0xdaddacd455c3180f31765fc898296d41422f0d41f70c996f8a45ba7f712dab7c", + "state_root_hash": "0x19d77dc1bf507d8378429cf768c1ab044d4ec072f6d553fb4ed5995ef992b964", "event_root_hash": "0xcbdbb1b830d1016d45a828bb3171ea81826e8315f14140acfbd7886f49fbcb40", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x89245d1d2144091028dde4f9f90c40073e95885ee9813d055e05f0b82f6c2f9a", + "accumulator_root_hash": "0x68a896ad127b657210a3686c74f5035c008516d1d50dd9c19759cdfd2e9e393c", "changes": [ { "type": "write_resource", "address": "0x1", - "state_key_hash": "0x3502b05382fba777545b45a0a9d40e86cdde7c3afbde19c748ce8b5f142c2b46", + "state_key_hash": "0xca8d050aeb41633812833df3ad073c1982c691d91c8c864eac95af94bef29a1c", "data": { "type": "0x1::Account::Account", "data": { @@ -26,7 +26,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x1016dada6d2f8ae7d9c9de56fcba087694a08ac88915a9600f76b561b1b40709", + "state_key_hash": "0x81a57f7a20408b6686204b0d69a72138700097bb4e08587f9dbe50861aebf702", "data": { "bytecode": "0xa11ceb0b050000000b010006020604030a3c04460a0550410791016508f60120069602140aaa02060cb0028a010dba030200000001000200000700000300010000040201000005020300000601040000070001000205070301000109080800020a090101000206010a0100020b070c010002070d0e010005060706080609060a060207080005000206080005010101080002070a050605010502060a0900060900010302070a09000900010a090004070a050605010302010302070a0900030109000341434c064572726f727306566563746f72036164640f6173736572745f636f6e7461696e7308636f6e7461696e7305656d7074790672656d6f7665046c69737410696e76616c69645f617267756d656e7409707573685f6261636b08696e6465785f6f6600000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000000201080a050001000005150a000f000e010c030c020b022e0b0338002003100b000107001106270b000f000b013801020101000001080b000b01110203070701110627020201000001050b0010000e013800020301000001033802120002040100000b180a000f000e010c030c020b022e0b0338030c050c040b0403120b000107011106270b000f000b0538040102000000", "abi": { @@ -110,7 +110,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x2919ba9c5f550ed4b85f3735ef6129545750d68d91a11574e905939dd78055f8", + "state_key_hash": "0x5e167f4a4805ebcf2bcba6ff7c6c014fc834548a54ba18723701caf483ddc696", "data": { "bytecode": "0xa11ceb0b050000000b01000802080e031671048701100597015b07f201fa0108ec0320068c040a0a96040b0ca104d0020df10604000000010002000300040700000507000202070100000006000100000700020000080304000009040300000a050600000b040100000c040100000d000700000e080300000f090a0000100605000011060b00030d0d07010003130e0f010001140707000315101101000316120a010002171301010002181411010002190a140100021a111401000c040d040f041004110512051305140501060801010101060a020108000102010801010a0201030107080102070801080000010b020108010302030301060a090002060a0900030106090001070a090001090002070a0900090001060b02010900010b0201090003030302054153434949064572726f7273064f7074696f6e06566563746f72044368617206537472696e6718616c6c5f636861726163746572735f7072696e7461626c650861735f6279746573046279746504636861720a696e746f5f62797465731169735f7072696e7461626c655f636861720d69735f76616c69645f63686172066c656e67746808706f705f6368617209707573685f6368617206737472696e670a7472795f737472696e6705627974657306626f72726f7710696e76616c69645f617267756d656e7408706f705f6261636b09707573685f6261636b0769735f736f6d650c64657374726f795f736f6d65046e6f6e6504736f6d650000000000000000000000000000000000000000000000000000000000000001030800000000000000000002010802010201120a02000100000c230a00100038000c030600000000000000000c02280a020a0323030c05200a0010000a023801140c010b011105200317051b0b000109020b02060100000000000000160c020506280802010100000a030b001000020201000004050b0013000c010b0102030100000a090a00110603060700110e270b001200020401000006050b0013010c010b010205010000010e0a003120260305050a0b00317e250c01050c090c010b0102060100000a040b00317f2502070100000a040b001101380002080100000a050b000f003802120002090100000a070b000f000e011001143803020a0100000b0c0b00110b0c010e01380403090700110e270b013805020b01000015210e0038000c020600000000000000000c01280a010a0223030b051c0e000a013801140c030b03110620031505173806020b01060100000000000000160c010505280b0012013807020100000000", "abi": { @@ -290,7 +290,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x2fe51d3f72e53bc3068e56d32558e8b4f4709a6342457a41e8bd78dc95f78470", + "state_key_hash": "0x582546fbd658536b476ed5d2a7a3348d1b56061a629a49f2e5ffa249fcc07ef8", "data": { "bytecode": "0xa11ceb0b050000000c01001602160c0322d60104f8010e058602a80107ae03fb0708a90b2006c90be8020ab10e260cd70ecf060da615040faa1502000100020003000400050006000700080009000a000b00010c00000c080006340400000d000100000e000200000f0002000010030400001101050000120005000013060100001400070000150004000016000800001709010000180a010000190b0100001a0a0100001b020100001c030100001d0c0100001e0d0100001f0e0100062c0f0100032d080800032e080800012f110401000a301308010005310f14000a3215010100073301010003350808000636171800083718010005380f00000339080800093a010700033b0808000a3c1a110100073d010800023e011200043f04040006140007000640000800034108080009421d07001600171219121700170422002204010500020c0a0202060c0a02010a02010c050c03030303010101030a060c050a020a020a020a020a020a020a0201070c030a0203030302090c030a020a050a0a0203030302080c030a02030303020a02030c0301050c030a02030201060c020a020c01060900010201060a090001060502070a09000a09000607080005080203030302060c03010802050303050608000a0202060a09000304030306080005020708000501060a020747656e65736973074163636f756e740342435307436861696e4964064572726f72730448617368065369676e65720854657374436f696e0954696d657374616d700e5472616e73616374696f6e4665651b5472616e73616374696f6e5075626c697368696e674f7074696f6e06566563746f7218436861696e53706563696669634163636f756e74496e666f0e6372656174655f6163636f756e74176372656174655f6163636f756e745f696e7465726e616c186372656174655f6163636f756e745f756e636865636b6564196372656174655f61757468656e7469636174696f6e5f6b65791d6372656174655f636f72655f6672616d65776f726b5f6163636f756e740d6372656174655f7369676e6572086570696c6f677565096578697374735f6174166765745f61757468656e7469636174696f6e5f6b6579136765745f73657175656e63655f6e756d6265720a696e697469616c697a650f6d6f64756c655f70726f6c6f6775651b6d756c74695f6167656e745f7363726970745f70726f6c6f6775650f70726f6c6f6775655f636f6d6d6f6e19726f746174655f61757468656e7469636174696f6e5f6b657922726f746174655f61757468656e7469636174696f6e5f6b65795f696e7465726e616c0f7363726970745f70726f6c6f6775651177726974657365745f6570696c6f6775651177726974657365745f70726f6c6f6775651261757468656e7469636174696f6e5f6b65790f73657175656e63655f6e756d6265720c73656c665f616464726573730b6d6f64756c655f616464720b6d6f64756c655f6e616d65147363726970745f70726f6c6f6775655f6e616d65146d6f64756c655f70726f6c6f6775655f6e616d651677726974657365745f70726f6c6f6775655f6e616d65196d756c74695f6167656e745f70726f6c6f6775655f6e616d6512757365725f6570696c6f6775655f6e616d651677726974657365745f6570696c6f6775655f6e616d651663757272656e63795f636f64655f726571756972656408726567697374657211616c72656164795f7075626c697368656410696e76616c69645f617267756d656e7408746f5f6279746573066c656e6774680e626f72726f775f6164647265737306617070656e640e6173736572745f67656e6573697304436f696e0e6c696d69745f6578636565646564087769746864726177086275726e5f6665650a616464726573735f6f661072657175697265735f616464726573731169735f6d6f64756c655f616c6c6f7765640d696e76616c69645f737461746506626f72726f770b6e6f775f7365636f6e64730367657408736861335f3235360a62616c616e63655f6f660d6e6f745f7075626c69736865641169735f7363726970745f616c6c6f776564000000000000000000000000000000000000000000000000000000000000000103080000000000000000030807000000000000000308060000000000000003080400000000000000030805000000000000000308030000000000000003080a00000000000000030809000000000000000308020000000000000003080b0000000000000003080100000000000000030808000000000000000410ffffffffffffffff00000000000000000308ec030000000000000308ef030000000000000308ed030000000000000308e9030000000000000308f2030000000000000308f1030000000000000308f0030000000000000308f4030000000000000308f3030000000000000308eb030000000000000308ea030000000000000308ee0300000000000005200000000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000000010520000000000000000000000000000000000000000000000000000000000a550c18000203200a02210322050102092305240a02250a02260a02270a02280a02290a022a0a022b010002000005070b001101010c010e011113020101000001180a00290020030707001114270a00071922030e07031115270a00071a22031507021115270b001102020200000010170a0011050c020e0038000c010e01380106200000000000000021030e07051115270e020a010600000000000000000b0012002d000b020b01020300000004110b010c020d020b001118380038020e02380106200000000000000021030f07051115270b0202040300000507111a071a1102010c000b000205000200060000010016380a030a0426030707041115270b030b04170c080a02350a083518070c2503160704111b270b020b08180c0a0e000b0a111c0c070b07111d0e00111e0c060a0611090c090a0935070c23032e070a111b270b062a000c050b09060100000000000000160b050f0015020701000001030b00290002080100010001050b002b0010011402090100010001050b002b00100014020a01000001170a00111e071b21030a0b00010708111f270b000b010b020b030b040b050b060b070b080b0912012d01020b00000100010e1120030507121121270b000b010b020b030b040b050b06110d020c00000100193c0b000b010b020b050b060b070b08110d0e0338030c0a0e0438040a0a21031307141115270600000000000000000c090a090a0a23031a053b0e030a093805140c0b0a0b11070325070d1115270b0b2b000c0c0e040a093806140c0d0b0d0b0c10011421033607101115270b09060100000000000000160c090515020d000001001b5911230b0523030707181115270e00111e0c0a11240b06210311070e1115270a0a29000317070d1115270a0a2b000c090b0211250a091001142103260b090107101115270a0135070c2303300b09010715111b270a010a0910001426033b0b090107171115270b010b0910001421034407161115270b030b04180c080a0a1126034e070f1115270b0a11270c070b070b08260358070f111527020e0200010001040e000b01110f020f010001001c190b00111e0c030a031107030907001128270e01380106200000000000000021031107051115270b032a000c020b010b020f0115021000000100010f0e071129030607131121270b000b010b020b030b040b050b06110d02110000000103070b111527120000000103071111152700010000000000", "abi": { @@ -479,7 +479,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xe7c46aba2fa4aa3b56c0adee4075dc8d2518ea3d3c35d094584f52c44d7e54e7", + "state_key_hash": "0x7736050f93a8f9cce25ed5fa6aec37cd51258e1527fd7a5fee24baf51bb44743", "data": { "bytecode": "0xa11ceb0b0500000006010002030206050807070f0d081c200c3c04000000010001010001060900010a020342435308746f5f627974657300000000000000000000000000000000000000000000000000000000000000010001020000", "abi": { @@ -510,7 +510,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xaee1008f6bec7a796661e761e643736d4ce392281ee2efe1f97f3fc7f556b364", + "state_key_hash": "0xb9a25ffae8304b435a01dc75f376743dedbfa100e7e67f273c4f71fb16433738", "data": { "bytecode": "0xa11ceb0b050000000b010006020604030a4604500a055a4b07a501a30108c8022006e8021e0a8603080c8e03f1030dff0604000000010002000007000003000100000402030000050003000006030400000705060000080506000009050600020407030100010b030300020c08090100020d060b0100020e0c060100020f0e0f0100070109010a010b010c010206080003010101060800010301080002070800030001060a090002060a09000301060900020a0103010a090002070a0900090001070102070a090003010709000607080003070103030309426974566563746f72064572726f727306566563746f720c69735f696e6465785f736574066c656e677468206c6f6e676573745f7365745f73657175656e63655f7374617274696e675f6174036e6577037365740a73686966745f6c65667405756e736574096269745f6669656c6410696e76616c69645f617267756d656e7406626f72726f7705656d70747909707573685f6261636b0a626f72726f775f6d7574000000000000000000000000000000000000000000000000000000000000000103080000000000000000030801000000000000000308000400000000000000020204030a0a010001000006110a010a001000380023030b0b000107001108270b0010000b01380114020101000006040b0010003800020201000003260a010a0010011423030b0b000107001108270a010c020a020a0010011423031405220a000a02110020031a051d0b000105220b02060100000000000000160c02050d0b020b011702030100000a250a0006000000000000000024030707011108270a00070223030e07011108270600000000000000000c0238020c01280a020a0023031805200d010938030b02060100000000000000160c020512280b000b01120002040100000d140a010a001000380023030b0b000107001108270b000f000b0138040c02080b02150205010000105d0a010a0010011426030705220a00100038000c070600000000000000000c050a050a07230312051f0a000f000a0538040c04090b04150b05060100000000000000160c05050d0b0001055c0a010c060a060a0010011423032b05450a000a060c030c020b022e0b0311000335053b0a000a060a0117110405400a000a060a011711060b06060100000000000000160c0605240a001001140b01170c060a060a00100114230352055a0a000a0611060b06060100000000000000160c06054b0b000102060100000d140a010a001000380023030b0b000107001108270b000f000b0138040c02090b0215020001000000", "abi": { @@ -623,7 +623,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x87b07aa352041a9cb02fdf5ef467f5b2c0be6f867836ecd668e51b9972386bee", + "state_key_hash": "0x126a80bbede56bde59cad7553844a41e3a014d1c522946bf64428bab88e0ccb8", "data": { "bytecode": "0xa11ceb0b050000000b01000e020e0e031c5704730405773107a801f303089b052006bb05580a9306190cac06c0010dec0706000000010002000300040005000600070800000806000210040106010009000100000a010200000b030100000c01040006150101000516060100041707040001180202000619080100021a0a010106031b010200031c010100011d020200061e010100051f06010001200202000221060b010609091009050c03030a050500010302060c030101020107080001060c010503060c050301080102070b020109000900010b0201090005426c6f636b064572726f7273054576656e740f5265636f6e66696775726174696f6e055374616b650f53797374656d4164647265737365730954696d657374616d700d426c6f636b4d657461646174610d4e6577426c6f636b4576656e740e626c6f636b5f70726f6c6f677565186765745f63757272656e745f626c6f636b5f68656967687419696e697469616c697a655f626c6f636b5f6d657461646174610e69735f696e697469616c697a6564066865696768740e65706f63685f696e7465726e616c106e65775f626c6f636b5f6576656e74730b4576656e7448616e646c6505726f756e640870726f706f7365721470726576696f75735f626c6f636b5f766f7465731174696d655f6d6963726f7365636f6e6473106173736572745f6f7065726174696e67096173736572745f766d1469735f63757272656e745f76616c696461746f721072657175697265735f61646472657373127570646174655f676c6f62616c5f74696d650a656d69745f6576656e74196c6173745f7265636f6e66696775726174696f6e5f74696d650b7265636f6e6669677572650d6e6f745f7075626c69736865640e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c6973686564106e65775f6576656e745f68616e646c6500000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000052000000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000a550c180002030d030e030f0b0201080101020411031205130a0514030000000100053511040e0011050a040702210308050b080c05050e0a0411060c050b050313070111072707032a000c060e000a040a0211080a06100014060100000000000000160a060f00150a060f010b010b040b030a02120138000b02110a170b061002142403330534110b020101000100010a110303050700110c2707032b0010001402020100000113110d0a00110e110320030b0b00010700110f270a000600000000000000000b010b00380112002d0002030000000103070329000200000002000100", "abi": { @@ -708,7 +708,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xfe8b9a022a52739d1e52f5391da7cb6e9caf54e93962f3d727c49bee337d240a", + "state_key_hash": "0x5a000c911bcda5efc11f5981c28fdedd194b3bfb8677b0681a269a8653cb46bb", "data": { "bytecode": "0xa11ceb0b050000000d01000802081803206e048e011205a00178079802ae0208c6042006e604140afa04150b8f05080c9705d8020def07080ef707080000000100020003000403010001000508010001000608010001000702010001000800010100000900020100000a03040102000b00040100000c05040100000d06070100000e08040102000f0904010000100a07010000110b07010003140d0e010003150304010002160b070001170f0f0003180410010003190d120100031a130c0100011b0f0f00011c0f0f00090c0a0c0b0c0e0702070f0c100c06070a0702060c060900010b00010900010b0301090002070a0900090000030b00010900060900060c020b03010900060900010502070a0900060900030b0001090006090005020b0001090006090001060c01090002060a090006090001010103010a090004070a0900060900010302010302070a090003030505050a4361706162696c697479064572726f7273065369676e657206566563746f72034361701043617044656c65676174655374617465084361705374617465094c696e65617243617007616371756972650e616371756972655f6c696e6561720b6164645f656c656d656e74066372656174650864656c6567617465106c696e6561725f726f6f745f616464720e72656d6f76655f656c656d656e74067265766f6b6509726f6f745f616464721076616c69646174655f6163717569726504726f6f740964656c65676174657308636f6e7461696e7309707573685f6261636b0a616464726573735f6f6611616c72656164795f7075626c697368656405656d70747908696e6465785f6f660672656d6f76650d696e76616c69645f73746174650d6e6f745f7075626c69736865640000000000000000000000000000000000000000000000000000000000000001030800000000000000000308010000000000000000020112050102011205020201130a050302011205000c030c020c010c00010002010204040b00380039000201010002010204040b0038003901020200000008120a000e010c030c020b022e0b03380120030b050f0b000b01380205110b0001020301000007110a00110c0c020b023b0220030c0b00010700110d270b00380339023f0202040100010207180a02110c0c030a033b030307050a0b0201020b020e0037001439033f030e003700143c0236010b033804020501000004040e00370214020600000011150a000b010c030c020b022e0b0338050c050c040b04030d05120b000b0538060105140b00010207010002010207120a023b032003050506020a023e033a03010e003700143c0236010e023807020801000004040e003700140209000002010214280b00110c0c020a023b030307051e0a023d033703140c030a033b02031207011111270a033d0237010e023808031b07011111270b030c0105260a023b02032407001112270b020c010b01020000020003000100000c010c020c030c00", "abi": { @@ -910,7 +910,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xe428253ccf0b18f3d8300c6a0d29de93abcdc526e88728abeb85d57aec558935", + "state_key_hash": "0x7595d53e2b906b0789fa10b90c822b238bfa278e04f719df00ded1d65652e435", "data": { "bytecode": "0xa11ceb0b050000000a01000a020a04030e2305310e073f940108d3012006f3012c0a9f02050ca402370ddb020200000001000200030004000008000005000100000602000004080000000409000000030a030000020b030400010c05050000010202060c0201060c0105010307436861696e4964064572726f7273065369676e65720f53797374656d4164647265737365730954696d657374616d70036765740a696e697469616c697a65026964106173736572745f6f7065726174696e670e6173736572745f67656e65736973146173736572745f636f72655f7265736f757263650a616464726573735f6f6611616c72656164795f7075626c69736865640000000000000000000000000000000000000000000000000000000000000001030800000000000000000520000000000000000000000000000000000000000000000000000000000a550c18000201070200010001000006110207012b001000140201010000001211030a0011040a001105290020030d0b000107001106270b000b0112002d0002000000", "abi": { @@ -960,7 +960,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xd7d01f14e6e00800c0211d2e6d0626f9330cc447b0c13c10974481f8dcc7d25a", + "state_key_hash": "0xb7c7e741b8f38a60ac0b752254b6d29c9a02c65974f4be9d946ecef18794dc42", "data": { "bytecode": "0xa11ceb0b050000000b01000c020c04031024043402053615074ba60108f101200691022c0abd02060cc3023f0d82030200000001000200030004000500000800000600010000070201000409010100030a000100010b030300050c01050100020d010100050401060c0002060c0a0201030102010a090001070a020f436f6e73656e737573436f6e666967064572726f72730f5265636f6e66696775726174696f6e0f53797374656d4164647265737365730954696d657374616d7006566563746f720a696e697469616c697a650373657406636f6e6669670e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c697368656405656d7074790b7265636f6e6669677572650000000000000000000000000000000000000000000000000000000000000001030800000000000000000520000000000000000000000000000000000000000000000000000000000a550c18000201080a0200010000011111020a0011030701290020030c0b000107001104270b00380012002d00020101000100060b0b00110307012a000f000c020b010b0215110602000000", "abi": { @@ -1010,7 +1010,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x5e829d633d861f80a0d3c5c4a88204062c0ab681484838700be0d4f411727670", + "state_key_hash": "0xaa5495695d8d93a0453dcb2b2bb721e4dd1f25f5fcc2f9660cf5dfaa91dde1af", "data": { "bytecode": "0xa11ceb0b0500000007010002030237053906073f9d0108dc012006fc011e0c9a0292010000000100000000020000000003000000000400000000050000000006000000000701000000080000000009000000000a000000000b000000010302020300064572726f727311616c72656164795f7075626c697368656406637573746f6d08696e7465726e616c10696e76616c69645f617267756d656e740d696e76616c69645f73746174650e6c696d69745f6578636565646564046d616b650d6e6f745f7075626c69736865641072657175697265735f616464726573731372657175697265735f6361706162696c6974790d72657175697265735f726f6c6500000000000000000000000000000000000000000000000000000000000000010201060201ff02010a02010702010102010802010502010202010402010300010000020407000b0011060201010000020407010b0011060202010000020407020b0011060203010000020407030b0011060204010000020407040b0011060205010000020407050b001106020600000002070b00340b0131082f160207010000020407060b0011060208010000020407070b0011060209010000020407080b001106020a010000020407090b0011060200", "abi": { @@ -1136,7 +1136,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xd08a133ae22fc988a2cb20313b2568273f971076d6e313a41ecea1b5a47e3132", + "state_key_hash": "0x9a4dc0677bc96a2d212c5722516398824928072c85f75566d706a309a6d2637f", "data": { "bytecode": "0xa11ceb0b050000000c0100060206120318290441040545330778a80108a002200ac002170bd702020cd902640dbd03060ec30304000000010002000304010601000408000005060002020600000600010106000702010106000803040106000905000106000a06010106010e090a0100020f05080005080407010b000109000002070b00010900090001060b000109000106080301060c030a0203090001090001080301060900010a020102054576656e740342435304475549440b4576656e7448616e646c65144576656e7448616e646c6547656e657261746f720b47554944577261707065720e64657374726f795f68616e646c650a656d69745f6576656e740467756964106e65775f6576656e745f68616e646c651477726974655f746f5f6576656e745f73746f726507636f756e7465720461646472096c656e5f627974657308746f5f62797465730663726561746500000000000000000000000000000000000000000000000000000000000000010002020b030808020102020b030c050202020d0208080300070001000001050b003a000101020101000001120a003700100138000a003701140b0138010a00370114060100000000000000160b00360115020201000001040b003700100102030100000b0706000000000000000031280b0011061202390002040002000001020100000007020700", "abi": { @@ -1285,7 +1285,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x9d2a6ab98492524c0d5976309b99aa7918eed8931aeb7714a29fd166188f2086", + "state_key_hash": "0x9d70adda4c0f2620f3a195ad821ff9d1ef27b9b0f72aa36c0bda3cc378646799", "data": { "bytecode": "0xa11ceb0b050000000a0100040204040308280530170747930108da012006fa01440abe02050cc30293020dd6040200000001000007000002000100000302010000040302000005010200000601040000070302000109020200010a02020002030301080001030203080001010401040404000204040c4669786564506f696e743332064572726f7273146372656174655f66726f6d5f726174696f6e616c156372656174655f66726f6d5f7261775f76616c75650a6469766964655f7536340d6765745f7261775f76616c75650769735f7a65726f0c6d756c7469706c795f7536340576616c756510696e76616c69645f617267756d656e740e6c696d69745f6578636565646564000000000000000000000000000000000000000000000000000000000000000103080000000000000000030801000000000000000308030000000000000003080200000000000000030804000000000000000410ffffffffffffffff000000000000000000020108030001000005310a003531402f0c050b013531202f0c040a04320000000000000000000000000000000022031107001106270b050b041a0c030a03320000000000000000000000000000000022031a051d080c0205210b00060000000000000000210c020b02032607041106270a03070525032d07041107270b03341200020101000006030b0012000202010000071f0e0110001406000000000000000022030907021106270b003531202f0c030b030e01100014351a0c020a02070525031c07011107270b0234020301000006040e00100014020401000006060e0010001406000000000000000021020501000007160b00350e0110001435180c030b033120300c020a02070525031307031107270b023402000000", "abi": { @@ -1387,7 +1387,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x6381f16dc6bae2e614dba7bb20b67727a383e30bab1b8bd6680a89f5644543b5", + "state_key_hash": "0xd29e3209a3c2cbc2be1fe988fa6fe3482ddc7e9fb043cdb67eca0a73aaca5ebd", "data": { "bytecode": "0xa11ceb0b050000000a010004020410031446055a2f078901fd010886032006a6030a0ab003170cc703ba020d8106080000000100020e0000000600000308000004070000050001000006020300000704010000080501000009060700000a060400000b080900000c000a00000d040700000e060300000f0b070000100b04000011000c00011400040001060c01080102050301080301050205060800010608010103020608010608030101010800010608030002030708020447554944065369676e6572104372656174654361706162696c6974790947656e657261746f7202494406637265617465096372656174655f69640b6372656174655f696d706c166372656174655f776974685f6361706162696c6974790c6372656174696f6e5f6e756d0f63726561746f725f616464726573730565715f69641567656e5f6372656174655f6361706162696c697479156765745f6e6578745f6372656174696f6e5f6e756d0269640f69645f6372656174696f6e5f6e756d1269645f63726561746f725f61646472657373117075626c6973685f67656e657261746f72046164647207636f756e7465720a616464726573735f6f6600000000000000000000000000000000000000000000000000000000000000010308000000000000000000020112050102010e0803020201130303020209031205000100010204120a00110d0c010a012902200308050d0b0006000000000000000012022d02050f0b00010b01110202010100000c040b010b0012030202000001020d120a002a020c020a021000140c010a01060100000000000000160b020f00150b010b00120312010203010001020c080a00290203050700270b00110202040100000c050b00100110021402050100000c050b00100110031402060100000c050b0010010b0121020701000004120a00110d0c010a012902200308050d0b0006000000000000000012022d02050f0b00010b011200020801000102070f0a00290220030505080600000000000000000c01050d0b002b021000140c010b0102090100000c040b00100114020a0100000c040b00100214020b0100000c040b00100314020c0100000c050b0006000000000000000012022d0202020001000300030100", "abi": { @@ -1602,7 +1602,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x825604f38d0c62c17921995d0d6ab57da6cf371316640b3c12456e9bb081685e", + "state_key_hash": "0xfb4305d07173565d215b45411045c9d468bae4644b8dc362e6ed1c4a7b7816ac", "data": { "bytecode": "0xa11ceb0b050000000901001e021e060324900104b4011005c401bc0107800398040898072006b807a8010ce008b1030000000100020003000400050006000700080009000a000b000c000d000e051f04010601000f000100001002010000110301000d12060701000d13090a01000114050b0001150c010008160d010008170e010008180f010008190101000110110100071a0f0500011b01100004100f01000e10120100081c1301000c10140100041d0c01000b101501000910120100091e16010005200f170106052117010106031018010006100f010002221201000a230f010003050308030704050408040716071707070c0a050a0a020a0a020a0a020a0a020a03000d0c0a020a0a02010a020a0202030a02030303030d060c0a020a0a02010a020a0202030a02030303030d030a020a0203030303030306050c0a020a02010501060a09000103010a0202060a09000301060900020c0a0202060c0a0204060c0a020a020a0204060c05030301060c010c0a060c050a020a020a020a020a020a020a020102060c0303060c030304060c0a020a020303060c0a0a020103060c0503010b0001090002060c020747656e65736973074163636f756e7405426c6f636b07436861696e49640f436f6e73656e737573436f6e666967054576656e740f5265636f6e66696775726174696f6e065369676e6572055374616b650854657374436f696e0954696d657374616d701b5472616e73616374696f6e5075626c697368696e674f7074696f6e08564d436f6e66696706566563746f720756657273696f6e1c6372656174655f696e697469616c697a655f76616c696461746f72730a696e697469616c697a6513696e697469616c697a655f696e7465726e616c066c656e67746806626f72726f77176372656174655f6163636f756e745f696e7465726e616c22726f746174655f61757468656e7469636174696f6e5f6b65795f696e7465726e616c1c72656769737465725f76616c696461746f725f63616e6469646174650e64656c65676174655f7374616b65126a6f696e5f76616c696461746f725f7365740c6f6e5f6e65775f65706f63680a616464726573735f6f661d6372656174655f636f72655f6672616d65776f726b5f6163636f756e7418696e697469616c697a655f76616c696461746f725f736574037365740d6d696e745f696e7465726e616c0b4576656e7448616e646c65106e65775f6576656e745f68616e646c650e64657374726f795f68616e646c6519696e697469616c697a655f626c6f636b5f6d65746164617461147365745f74696d655f6861735f737461727465640000000000000000000000000000000000000000000000000000000000000001052000000000000000000000000000000000000000000000000000000000000000010a0208074163636f756e740a02100f7363726970745f70726f6c6f6775650a02100f6d6f64756c655f70726f6c6f6775650a02121177726974657365745f70726f6c6f6775650a021c1b6d756c74695f6167656e745f7363726970745f70726f6c6f6775650a0209086570696c6f6775650a02121177726974657365745f6570696c6f6775650002000004670e0138000c0d0e0238010c0c0a0d0a0c21030c060000000000000000270e0438010c0f0b0c0a0f210315060000000000000000270e0538010c0b0b0f0a0b21031e060000000000000000270e0638020c0e0b0b0b0e210327060000000000000000270600000000000000000c0a0a0a0a0d23032e05650e010a0a38030c100a10141105010c110e020a0a3804140c120e110b1211060e040a0a3804140c130e050a0a3804140c090e030a0a3804140c080e110b080b130b0911070e060a0a3805140c070e000b10140b0706a08601000000000011080e1111090b0a060100000000000000160c0a0529110a0201000000010f0e000b010b020b030b040b050b060b070b080b090b0a0b0b0b0c1102020200000010460a000700070107020703070407050706070709110b0a00110c110501010a000a011106110d0c0d0e0d0b0111060a00110e0a000b07110f0a000b0b0b0c11100a000b040b050b0911110a000b0811120a000b020b0311130a000640420f000000000011140a000a00110c06ffffffffffffffff11150a00380638070a00380638070a000b0611180a0011190a000b0a111a0b00111b0200", "abi": { @@ -1633,7 +1633,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xe2ae97cbf2c1281ac9db9c74afd12dda59793a59b62fe45d10671cb38611bc06", + "state_key_hash": "0xcc749b6e613adae275ce5563018662db7d46282a684163d1c18034d29e7a3b28", "data": { "bytecode": "0xa11ceb0b050000000601000203020a050c03070f170826200c4608000000010000000002000000010a02044861736808736861325f32353608736861335f3235360000000000000000000000000000000000000000000000000000000000000001000102000101020000", "abi": { @@ -1671,7 +1671,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xa226c41a340ac469a4e04ca7182a655ef05d3a0a68a7eec49a33115925ad5ec8", + "state_key_hash": "0x874bd085690b9c8b2155693ce0136b6dd4eeff4dbf9c8bdd559796fc3f4abdbc", "data": { "bytecode": "0xa11ceb0b050000000c010006020606030c2c05381d07557408c9012006e9011e0a8702080b8f02020c91028d010d9e03020ea0030200000001000200000801000000030000010400040102010400050003010400060405010401090606000203070000010a060600010b060600010503060c09000500010102060c05010900010301060c040105090005054f66666572064572726f7273065369676e65720a616464726573735f6f6606637265617465096578697374735f61740672656465656d076f66666572656403666f720d6e6f745f7075626c697368656411616c72656164795f7075626c697368656410696e76616c69645f617267756d656e740000000000000000000000000000000000000000000000000000000000000001030801000000000000000308000000000000000003080200000000000000000202070900080500050001000100020b0a003b00030607021104270b003d00370014020101000002100a0011053b0020030a0b000107001106270b000b010b0239003f00020201000002030b003b0002030100010008230a013b0003080b000107021104270a013e003a000c030c040b0011050c050a050b032103150518080c02051c0b050b01210c020b02032107011107270b04020001000500", "abi": { @@ -1780,7 +1780,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x575c96840ac15e64ebd62878d4af35b88806031ae2f323ed1a6237b48674e1fd", + "state_key_hash": "0xaa5a52c77639060ae6c370c4d82e5dd6c3f2b80961b91ded65e4f0e8a591fdc7", "data": { "bytecode": "0xa11ceb0b050000000d010006020606030c9b0104a7011a05c1019c0107dd028c0208e90420068905140a9d05070ba405020ca605e9030d8f09020e910902000000010002000007010000000300010100000402030100000504010100000604050100000706070100000806080100000909080102000a02080100000b0a070100000c0b080103000d00050100000e00050100000f0706010000100806010000110a08010000120a06010001140c0c0002030d01010002040e030100021510050100020611050100021612070100021714080100021815070100021907120100021a081201000b0811081208130814080a08150816081708180819080c080d0801060b000109000106090001070b000109000107090002060b000109000609000101010b0001090000010900020b00010900090002070b00010900090002060b000109000900010302060a09000302070a09000302060900060a090001060a090002060a0900060900010a09000209000a090001070a090002070a09000900020900060a0900020900070a0900030b000109000b00010900070a0900064f7074696f6e064572726f727306566563746f7206626f72726f770a626f72726f775f6d757413626f72726f775f776974685f64656661756c7408636f6e7461696e730c64657374726f795f6e6f6e650c64657374726f795f736f6d651464657374726f795f776974685f64656661756c7407657874726163740466696c6c106765745f776974685f64656661756c740769735f6e6f6e650769735f736f6d65046e6f6e6504736f6d6504737761700c737761705f6f725f66696c6c0376656310696e76616c69645f617267756d656e740869735f656d7074790d64657374726f795f656d70747908706f705f6261636b09707573685f6261636b05656d7074790973696e676c65746f6e00000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000000201130a0900000800010000070d0a00380003080b000107011110270b00370006000000000000000038010201010000070e0a002e380003090b000107011110270b003600060000000000000000380202020100000f140b0037000c030a0338030307050c0b03010b010c0205120b01010b0306000000000000000038010c020b02020301000007050b0037000b0138040204010000120c0e003805030607001110270b003a000c010b013806020501000013100e003800030607011110270b003a000c020d0238070c010b0238060b01020601000013100b003a000c030d032e38030308050b0b010c02050e0d0338070c020b020207010000070d0a002e380003090b000107011110270b0036003807020801000014100b0036000c020a022e3803030c0b020107001110270b020b013808020901000016130b0037000c030a0338030307050c0b03010b010c0205110b030600000000000000003801140c020b02020a01000007040b0037003803020b01000007050b003700380320020c010000070338093900020d01000007040b00380a3900020e01000017140a002e380003090b000107011110270b0036000c030a0338070c020b030b0138080b02020f01000018160b0036000c040a042e38030308050b380b0c02050f0a043807380c0c020b020c030b040b0138080b03020000000800", "abi": { @@ -2064,7 +2064,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x0f9c518f531ac3d732301355e37e9dc9d48fa443047f4c18cf3fc65d8fc33bfe", + "state_key_hash": "0x911bacf624d04995d53d1381d9e536cd4fa6ad93c3374d244267d34660fd7ead", "data": { "bytecode": "0xa11ceb0b050000000c01001002101203226b048d01040591012807b901d604088f062006af065e0a8d07170ca407bc030de00a060fe60a0a00050006000700080009000a000b000c000d0800000e0800000f0600021b04010601001000010000110101000012000100001300010000140001000015010200001601030000170101000018010100061d000100011e020200011f02020002200601010604210007000722010100012302020003240702000225000801060526010100072701030007280102000c05110501060c0001030101020107080001080202070b0301090009000105010b030109000401010708000305426c6f636b0f436f6e73656e737573436f6e6669671b5472616e73616374696f6e5075626c697368696e674f7074696f6e08564d436f6e6669670756657273696f6e0f5265636f6e66696775726174696f6e064572726f7273054576656e740447554944065369676e6572055374616b650f53797374656d4164647265737365730954696d657374616d700d436f6e66696775726174696f6e1644697361626c655265636f6e66696775726174696f6e0d4e657745706f63684576656e741764697361626c655f7265636f6e66696775726174696f6e22656d69745f67656e657369735f7265636f6e66696775726174696f6e5f6576656e7416656e61626c655f7265636f6e66696775726174696f6e11666f7263655f7265636f6e6669677572650a696e697469616c697a65196c6173745f7265636f6e66696775726174696f6e5f74696d65177265636f6e66696775726174696f6e5f656e61626c65640b7265636f6e6669677572650c7265636f6e6669677572655f0565706f6368066576656e74730b4576656e7448616e646c650b64756d6d795f6669656c64146173736572745f636f72655f7265736f757263650d696e76616c69645f73746174650d6e6f745f7075626c69736865640a656d69745f6576656e740a616464726573735f6f660e6173736572745f67656e6573697311616c72656164795f7075626c6973686564156765745f6e6578745f6372656174696f6e5f6e756d106e65775f6576656e745f68616e646c650c6f6e5f6e65775f65706f63680a69735f67656e65736973106e6f775f6d6963726f7365636f6e6473000000000000000000000000000000000000000000000000000000000000000103080100000000000000030800000000000000000308030000000000000003080400000000000000030802000000000000000308ffffffffffffffff0520000000000000000000000000000000000000000000000000000000000a550c18000203190315031a0b030108020102011c01020201190300000000010e0a001109110603090b00010701110a270b000912012d01020100000100042c0706290003060701110b2707062a000c010a0110001406000000000000000021031005170a01100114060000000000000000210c000519090c000b0003200b01010701110a270601000000000000000a010f00150a010f020b011000141202380002020000010101100a001109110620030a0b00010701110a270b00110d2c0113010102030200010001040b00110911070204010000011f110e0a0011090706290020030c0b00010701110f270a00110d11100604000000000000002103170b00010703110a270a000600000000000000000600000000000000000b00380112002d00020501000100010507062b001001140206000000010407062901200207030001000103111211080208000001000945111303030506080c00050a1114060000000000000000210c000b00030d0510080c0105131106200c010b01031605170207062a000c0211140c030a030a0210011421032305260b0201020a030a021001142403310b02010702110a270b030a020f01150a02100014060100000000000000160a020f00150a020f020b0210001412023800020000000100020000000100020003000400", "abi": { @@ -2172,7 +2172,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x1c7e2c034ee74231f152214ed7888b888736f3f52518b75d7af69570d338bb7a", + "state_key_hash": "0x44a1477b36739af33b2b579ed55a148861af61b1fcee5beaa763a7dbe04cfba0", "data": { "bytecode": "0xa11ceb0b050000000601000203020a050c0c0718310849200c6908000000010001000002020100010a020101030a020a020a02095369676e617475726517656432353531395f76616c69646174655f7075626b65790e656432353531395f7665726966790000000000000000000000000000000000000000000000000000000000000001000102000101020000", "abi": { @@ -2212,7 +2212,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xdf3fee0bf8e5d44605b4b6d43bdf7616bf18a223c0a953d58f49d03330a9a3f8", + "state_key_hash": "0x0c5668c479cf36977046f30c0c1dcfe857abe4d94f2f2d2b2d979e3cc577d60e", "data": { "bytecode": "0xa11ceb0b050000000601000203020a050c090715210836200c561000000001000100000200020001060c010501060500065369676e65720a616464726573735f6f660e626f72726f775f6164647265737300000000000000000000000000000000000000000000000000000000000000010001000003040b00110114020101020000", "abi": { @@ -2250,7 +2250,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x708a4495d604e5104a7491529cefcd59d146666ae3e54b1cb642afc2a7886f6f", + "state_key_hash": "0xfd6519b9e50503135729efc81955552b72659c2e3d0df344057bd5736198662a", "data": { "bytecode": "0xa11ceb0b050000000c01001002101e032ed6010484022c05b002ea02079a058d0708a70c2006c70c90010ad70d4a0ca10e840c0da51a1e0fc31a0400020003000400050006000700080009000a0400000b0c00000c0f00000d0700000e0800020407010000051f0400000f00010100001002010000110301000012040500001306070000140805000015090a0000160b0100001709070000180c010000190c0100001a010100001b0d0100001c0e0100001d0f0100001e09010000200f1000002111120007341407010007351513010007361601010005201810000637011900013819190003390c0900053a1a1900073b14190100073c1c1d0100053d011000053e1e0100073f2021010002401322010002410122010002422407010004430c010007440128010002452c13010007461c130100014719190002482407010012131313141314121a121b121e121f19201921191a0a1e0a230a140a2419250a000a1b0a231200122719251202070a0900070a09000004060c05030301070a080002060a080005010b0501030206080105010102060a080305010501080303060c030301060c04060c0a020a020a0202060c0a0202060c0501080602070a08000501080001090001060a090001070a090002070a090009000a070801050806030505080603080007080102060c03010301060806040708000303080602070a0900030107090002070806080603060800030302060a09000301060900010b05010900070b0501030b050103010b050103010b0501030101060b0501090002030302080203070203030a08030a08030a0803060c010a0900040b0501030b05010301060804090b0501030b050103010b0501030105010608010708040505030b050103080307080401070b050109000a050503030303030307080307080406030a08000a08000a08000a0800060c02050708020505030800010708010403030307080104050806080007080104070a080005030b0501030747656e657369730f5265636f6e66696775726174696f6e055374616b65064572726f7273064f7074696f6e065369676e65720f53797374656d4164647265737365730854657374436f696e0954696d657374616d7006566563746f720a44656c65676174696f6e095374616b65506f6f6c0f56616c696461746f72436f6e6669670d56616c696461746f72496e666f0c56616c696461746f7253657406617070656e640e64656c65676174655f7374616b6511646973747269627574655f7265776172640f66696e645f64656c65676174696f6e1966696e645f64656c65676174696f6e5f66726f6d5f706f6f6c0e66696e645f76616c696461746f721767656e65726174655f76616c696461746f725f696e666f18696e697469616c697a655f76616c696461746f725f7365741469735f63757272656e745f76616c696461746f72126a6f696e5f76616c696461746f725f736574136c656176655f76616c696461746f725f7365740c6f6e5f6e65775f65706f63681c72656769737465725f76616c696461746f725f63616e64696461746514726f746174655f636f6e73656e7375735f6b657906756e6c6f636b117570646174655f7374616b655f706f6f6c04436f696e0877697468647261771177697468647261775f696e7465726e616c05636f696e730466726f6d116c6f636b65645f756e74696c5f736563730d63757272656e745f7374616b650661637469766508696e6163746976650e70656e64696e675f6163746976651070656e64696e675f696e61637469766510636f6e73656e7375735f7075626b65790f6e6574776f726b5f616464726573731066756c6c6e6f64655f6164647265737304616464720c766f74696e675f706f77657206636f6e66696710636f6e73656e7375735f736368656d650d6d696e696d756d5f7374616b650d6d6178696d756d5f7374616b65116163746976655f76616c696461746f72730869735f656d70747908706f705f6261636b09707573685f6261636b0b6e6f775f7365636f6e647310696e76616c69645f617267756d656e740a616464726573735f6f660576616c7565066c656e6774680a626f72726f775f6d7574047a65726f056d6572676506626f72726f7704736f6d65046e6f6e650769735f736f6d65146173736572745f636f72655f7265736f7572636505656d70747907657874726163740b737761705f72656d6f76650d6e6f745f7075626c69736865640769735f6e6f6e6500000000000000000000000000000000000000000000000000000000000000010308070000000000000003080a000000000000000308010000000000000003080900000000000000030802000000000000000308080000000000000003080600000000000000030805000000000000000308040000000000000003080300000000000000030880510100000000000520000000000000000000000000000000000000000000000000000000000a550c18000203220806230524030102052503260a0800270a0800280a0800290a08000202032a0a022b0a022c0a020302032d052e032f0802040206300231033203330a0803290a0803280a08030000000001100a012e3800200306050b0a000a013801380205000b01010b00010201020002010417490a000b0211150c0a11160c0b0b0b070a160a032303110b000107041117270b0011180c090a012a010c0d0a0d0a090c050c040b042e0b0511042003260b0d0107011117270b0a0c060b030c070b090c080b060b080b0712000c0c0b0111080335053a0b0d0f000b0c380305480a0d1001140e0c10021119160a0d0f01150b0d0f030b0c380302020000001b1d0600000000000000000c020a002e38040c030a020a0323030b051a0a000a0238050c01111c0c040b010f020b04111d0b02060100000000000000160c0205060b000102030000001f230600000000000000000c030a0038040c040a030a0423030a051f0a000a0338060c020b021004140a01210315051a0b00010b033807020b03060100000000000000160c0305050b00013808020400000023340a0010030a0111030c020e0238090309050c080c0405140a0010000a0111030c030e0338090c040b040317051a080c0605220a0010050a0111030c050e0538090c060b060325052a0b0001080c0805320b0010060b0111030c070e0738090c080b08020500000025210600000000000000000c020a00380a0c030a020a0323030a051d0a000a02380b1007140a0121031305180b00010b023807020b02060100000000000000160c0205050b0001380802060000020102260e0a002b02140c010a002b011001140c020b000b020b011203020701000027180a0011220b000c090b010c040b020c05380c0c06380c0c07380c0c080b0931000b040b050b060b080b0712042d04020801000104291b070b2b040c040a0410080a0011050c010e013809030c05110b0401080c0305190b0410090b0011050c020e0238090c030b0302090200030102042a570b0011180c060a062b010c08070b2a040c090a081001140a09100a142603180b09010b080107071117270b081001140a09100b142503250b090107061117270a0910080a0611050c010e013809032e0531080c0305390a0910090a0611050c020e0238090c030b03033c053f080c0505470a09100c0a0611050c040e0438090c050b050c070b072003510b090107001117270b090f0c0b061106380d020a020001042b2b0b0011180c01070b2a040c050a0510080b0111050c030e03380903130b050107051117270d03380e0c020a050f080b02380f0c040a051008380a0600000000000000002403260b050107031117270b050f090b04380d020b0300030102042d5c070b2a040c090600000000000000000c020a091008380a0c050a020a0523030e051c0a0910080a02380b1007140c000b00110f0b02060100000000000000160c0205090600000000000000000c030a091009380a0c060a030a0623032705350a0910090a03380b1007140c010b01110f0b03060100000000000000160c0305220a090f080a090f0c3810380c0a090f09150600000000000000000c040a091008380a0c070a040a0723034905590a090f080a0438110c080a0810071411060b08150b04060100000000000000160c0405440b0901020c0200002e190a000c0938120c0538120c0638120c0738120c080b090600000000000000000b050b080b060b0712012d010b000b010b020b0312022d02020d020001022f110b0011180c020a022902030907081126270b022a020c030b010b030f0d15020e020002010430290b0011180c0211160c030a012a010c060a060f030b0211110c040b0111080c050b0520031405190b060f060b04380305280e04100e140b032303240b060107091117270b060f050b043803020f0000010131330b002a010c040a040f0311020a040f0511020a040f030a040f0038130a040f060a040f0538130600000000000000000c010600000000000000000c020a04100338040c030a020a03230320052e0b010a0410030a02380610021119160c010b02060100000000000000160c02051b0b010b040f011502100200010132120b0011180c020b012a010c050b050f060b0211110c040b04130001010c030b03021100000033190a000b010c030c020b022e0b0311030c050e053814030d05120b000107021117270d05380e0c040b000b043815020103010000000101000101040102030004030404040104020405020000020000000100", "abi": { @@ -2509,7 +2509,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xc4aebacf8a405ac49ac6021ebfdaf607b74d008ee4ad3d46c01c2419179d1535", + "state_key_hash": "0x0df9ca1274d45e552db393ebc40cf921896041913cce8e3698e6ceaf7e4b244c", "data": { "bytecode": "0xa11ceb0b050000000701000603061e05240a072e8f0108bd012006dd01580cb5024000000001000200030001000004020100000500010000060203000207000200010804040001060c000105010101030f53797374656d416464726573736573064572726f7273065369676e6572146173736572745f636f72655f7265736f757263651c6173736572745f636f72655f7265736f757263655f61646472657373096173736572745f766d1869735f636f72655f7265736f757263655f616464726573730a616464726573735f6f661072657175697265735f6164647265737300000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000052000000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000a550c180001000001040b0011041101020101000001070b00110303060700110527020201000001090b00110407022103080701110527020301000001040b000703210200", "abi": { @@ -2563,7 +2563,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x6fd26ff28836349d70c072893be8cd17d3f5fbd0c1588c0639733f61fd1ed8f1", + "state_key_hash": "0x3dd31664ce8cac7a72689d2e11837a283458a798ea5604a616225e02da645b04", "data": { "bytecode": "0xa11ceb0b050000000d01000402040e03128801049a011405ae017d07ab02f70108a2042006c2041e0ae0040d0bed04040cf1049b020d8c07040e9007040000000100020e010000000004020001000100030001020000000402010300000000050304020000000603050300000000070607030000000008060802000000090008020002000a0309020000000b030903000000000c0a01020000000d0b0103000000000e0a0103000000000f0b0902000000100b0c0200000011010a0200040012010d000013060e0200000014060f0300000001170c0c0001100310041007110011051108100a100b10111003070b01020900090106090009010003070b0102090009010609000b0001090102060b0102090009010609000106090101060b0001090102070b01020900090106090001070b00010901010709010101010b01020900090101060b01020900090101030104010901010b0001090103090009010b000109010209000901055461626c65064572726f727303426f7803616464076164645f626f7806626f72726f770a626f72726f775f626f780e626f72726f775f626f785f6d75740a626f72726f775f6d757417626f72726f775f6d75745f776974685f64656661756c7408636f6e7461696e730c636f6e7461696e735f626f780d64657374726f795f656d7074791164657374726f795f656d7074795f626f781264726f705f756e636865636b65645f626f7805656d707479066c656e677468036e6577106e65775f7461626c655f68616e646c650672656d6f76650a72656d6f76655f626f780376616c0668616e646c650d696e76616c69645f7374617465000000000000000000000000000000000000000000000000000000000000000103086400000000000000030866000000000000000308650000000000000000020115090001020216041003000e011100010000010e0a000b010b02390038000a00370014060100000000000000160b0036001502010002000201000001050b000b01380137010203000200040002000501000001050b000b0138023601020601000006130a000a010c040c030b032e0b04380320030b050f0a000a010b0238040b000b013805020701000001040b000b013806020800020009010000010e0e0037001406000000000000000021030907011112270e0038070b003808020a0002000b0002000c01000001060b0037001406000000000000000021020d01000001040b00370014020e0100000104110f0600000000000000003901020f000200100100000e0f0a000b0138093a000c020a00370014060100000000000000170b003600150b020211000200010100000011010e00", "abi": { @@ -2814,7 +2814,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xa1e8b314992e07fcc8027b38c1c807c818d0c18f359f7a3e9c272c05623351ae", + "state_key_hash": "0x811e3eab39f5e04cf36123ac9ae25baa2987f904e6f736215d162f56eb7c2cb2", "data": { "bytecode": "0xa11ceb0b050000000c01000e020e340342bf010481021a059b02c10107dc03a7050883092006a309540af709430cba0ad0050d8a100e0f98100200010002000300040005000600070008080000090c00000a0400000b0800000c0400000d0800000e0c00000f06000010060000110800030407010000022c0401060100120001000013020300001404030000150503000016060300001707030000180803000019000900001a000a00001b0b0300001c0c0300001d0d0300001e0d0300001f060300002003010000210d030000220e010000230b04000024030400012e010100042f060000033011090100033111120100063214150100053306030006341701010006311812010001350101000636190301000337031c01000338151c01000639031d0100013a010100023b06200106023c23030106013d01010015011601171319131a131c131d011e011f13211f2121221f22210105010302060c08020001080202080206080101060c020c05020508020101010b0a010302060c0302070802080203060c0503010608020106080103070a0804030b0a010301060b0a0109000106090001080402070a09000301090005070a080403070a08040608040301060a090002060a09000302070a09000900030307030305060a0804060804030b0a010303010b0a010900010a09000206080605010808010b0b01090001080703080207080907080902070b0b010900090003050307030e5472616e73616374696f6e4665650854657374436f696e064572726f7273054576656e74064f7074696f6e065369676e65720f53797374656d41646472657373657306566563746f720742616c616e63650e4275726e4361706162696c69747904436f696e08436f696e496e666f1744656c6567617465644d696e744361706162696c6974790b44656c65676174696f6e730e4d696e744361706162696c6974790d52656365697665644576656e740953656e744576656e740e5472616e736665724576656e74730a62616c616e63655f6f66046275726e086275726e5f676173146275726e5f776974685f6361706162696c69747915636c61696d5f6d696e745f6361706162696c6974791864656c65676174655f6d696e745f6361706162696c697479076465706f736974096578697374735f61740f66696e645f64656c65676174696f6e0a696e697469616c697a65056d65726765046d696e740d6d696e745f696e7465726e616c0872656769737465720e7363616c696e675f666163746f72087472616e736665720576616c7565087769746864726177047a65726f04636f696e0b64756d6d795f6669656c6402746f05696e6e657206616d6f756e740466726f6d0b73656e745f6576656e74730b4576656e7448616e646c650f72656365697665645f6576656e74730d6e6f745f7075626c69736865640a616464726573735f6f660769735f736f6d6506626f72726f770b737761705f72656d6f7665146173736572745f636f72655f7265736f75726365066c656e67746810696e76616c69645f617267756d656e7409707573685f6261636b046e6f6e6504736f6d6505656d70747911616c72656164795f7075626c6973686564106e65775f6576656e745f68616e646c650a656d69745f6576656e740e6c696d69745f6578636565646564000000000000000000000000000000000000000000000000000000000000000103080300000000000000030801000000000000000308020000000000000003080400000000000000030800000000000000000520000000000000000000000000000000000000000000000000000000000a550c180002012508020102012601020201220303020120030402012705050201280a0804060201260107020229032a05080202290327050902022b0b0b0108082d0b0b0108070001000100030c0a002900030607021113270b002b0010001001140201010001010f080b0011142b010c020b010b0211030202030001010f0707052b010c010b000b011103020300000003040b00130201020402000105101d0a00111411080c030e033800030b0b00010703270e033801140c0207052a050f020c010b010b0238021304010b000912062d06020502000105162d0e00111807052a050f020c040600000000000000000c060a060a042e380323030f05280a040a060c030c020b022e0b0338040c050b051003140a012203230b04010700111b270b06060100000000000000160c0605080b040b01120438050206010001001a110a0011000c020b002a000f000f010c030b0113020c040b020b04160b0315020701000003030b0029000208000001051b2807052b0510020c010600000000000000000c030a0138030c0538060c040a030a0523031005260a010a0338040c020b021003140a0021031b05210b01010b0338070c0405260b03060100000000000000160c03050b0b04020901000003150a0011180a000912062d060a000912012d010a000b0112032d030a00380812052d050b00110d020a010000010c0b0113020c020a001001140b02160b000f0115020b020002000603050b000b010b02110c020c01000200061e0b0b0011140c040b042b06010b010b0212021106020d01000004170a001114290020030a0b000107011120270a00060000000000000000120212002d000a000a0038090b00380a12092d09020e01000103030507052b03100414020f0200020009221c0a000a0211110c030a010b0311060a0011142a090c050b050f050a020a011208380b0b012a090c040b040f060b020b0011141207380c021001000003040b00100114021101000100241a0b0011140c020a0211000c030a030a0126030d07041123270b022a000f000f010c040b030a01170b04150b011202021201000003030600000000000000001202020000020005000400030009000901000000", "abi": { @@ -3162,7 +3162,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xe8aa027cc8ba73bb82e029247e4071a79a437bd4ee493d2c5f7fee90caf9565e", + "state_key_hash": "0x196cc0cdcfab6d5109ca91ca3b92601c565a6237fe894ab33f6ab572e079ac34", "data": { "bytecode": "0xa11ceb0b050000000b010006020604030a3c054615075b890208e402200684036c0af003050cf503bc010db105020fb305020001000200030004080000050000000006000000000700010000080001000009000200000a000200000b030000000c040000010e020200020f03000002100300000111020200000101010301060c03060c050301080002070800030747656e657369730954696d657374616d70064572726f72730f53797374656d4164647265737365731743757272656e7454696d654d6963726f7365636f6e64730e6173736572745f67656e65736973106173736572745f6f7065726174696e670a69735f67656e657369730c69735f6f7065726174696e67106e6f775f6d6963726f7365636f6e64730b6e6f775f7365636f6e6473147365745f74696d655f6861735f73746172746564127570646174655f676c6f62616c5f74696d650c6d6963726f7365636f6e64730d696e76616c69645f7374617465146173736572745f636f72655f7265736f75726365096173736572745f766d10696e76616c69645f617267756d656e740000000000000000000000000000000000000000000000000000000000000001030800000000000000000308010000000000000003080200000000000000030840420f00000000000520000000000000000000000000000000000000000000000000000000000a550c18052000000000000000000000000000000000000000000000000000000000000000000002010d030001000000061102030507001108270201010000000611030305070111082702020100000004070429002002030100000003070429000204010001000006110107042b001000140205010001000004110407031a0206030000050811000a0011090b0006000000000000000012002d00020701000100062711010b00110a07042a000c030a031000140c040b01070521030f05190b040a022103180b03010702110b2705220b040a022303220b03010702110b270b020b030f0015020000000000", "abi": { @@ -3265,7 +3265,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xd47f5c819e9f189b2abfc16705c61c7c52183d9acafad7bcee5495dc4038e9aa", + "state_key_hash": "0x0798a65921f0750cc3e13323e29cf540e5ca2ecf59c21db4fe203dba6c70f24c", "data": { "bytecode": "0xa11ceb0b050000000b01000e020e40034ee80104b6023a05f002ed0307dd06e10708be0e2006de0efe010adc1095010cf111a70c0d981e200000000100020003000400050006000704000008040000090800000a0600000b040000000400000c0700000d0700000e0800000f0600011107000404070100000606040200010001033b040106010010000100001202010000130304000014050100001506010000160704000017080400001809040000190a0100001a0b0100001b000100001c0c0100001d0c0100001e0d0100001f0e010000200f0100002110010000221101000023110100002412010000251301000026141500002716010000281718000029171800053d111a00023e1b1b00063f1d1e02000002401b1b0006411d20020000064221220200000443231e01000442242501000644012802000402451b1b0006462a0102000001472c2b0004482d2e01000449012e0100044123300100034a35010106034b11380106024c1b1b001b1c1b1f1d1f1e1c1f1b201b2127211c211f21291b272327251b261b1e27271b231c231f23291b3228341e3223322132293429391b291d29283902060c08050005060c080a080a080a0b0b010302060c0301080705060c0a020a020a020308060c0a020a020a020103030a0208060c080a080a080a01030b0b0103080a0305080a080a03050a020a0204060c0a020a020a0207060c0a020a020a0201030a020205080504060c060c0608070306060c060c050a020a020302060c06080704060c050a020a0201060c02070805080504060c0506080703010608050106080704060c060807050303060c060807030108050506080005070802070307080601050103020807080602060b0c0209000901060900010102080708000106090102070b0c02090009010609000107090101060b0b01090001070b0b0109000107090005070b0c02080a080106080a050801070b0c02080a080102080a0801010b0c0209000901020807080403070b0c0209000901060900090101080a010a02010900010b0b010900070b0b0103050708010708020b0b0103080608070106090004070b0c020807080506080705070b0c020807080502080708050107080801080302070b0d01090009000207080507080808070b0c0208070805060807030807060807070b0c020807080505070b0c0208070805010b0d0109000108090606080407080207030708020703070806020507080805070b0c0208070805060807050703070b0c020807080505546f6b656e054153434949064572726f7273054576656e74064f7074696f6e065369676e6572055461626c650e4275726e4361706162696c6974790a436f6c6c656374696f6e0b436f6c6c656374696f6e730c4465706f7369744576656e740e4d696e744361706162696c69747909546f6b656e4461746107546f6b656e49640a546f6b656e53746f72650d57697468647261774576656e74046275726e06537472696e67116372656174655f636f6c6c656374696f6e1b6372656174655f636f6c6c656374696f6e5f616e645f746f6b656e206372656174655f6c696d697465645f636f6c6c656374696f6e5f7363726970741b6372656174655f6c696d697465645f746f6b656e5f7363726970740c6372656174655f746f6b656e0f6372656174655f746f6b656e5f6964136372656174655f746f6b656e5f69645f726177226372656174655f756e6c696d697465645f636f6c6c656374696f6e5f7363726970741d6372656174655f756e6c696d697465645f746f6b656e5f7363726970740d6465706f7369745f746f6b656e0e6469726563745f6465706f7369741c6469726563745f6465706f7369745f776974686f75745f6576656e740f6469726563745f7472616e73666572166469726563745f7472616e736665725f73637269707410696e697469616c697a655f746f6b656e17696e697469616c697a655f746f6b656e5f666f725f696417696e697469616c697a655f746f6b656e5f73637269707416696e697469616c697a655f746f6b656e5f73746f7265056d65726765046d696e7408746f6b656e5f6964087472616e736665720e77697468647261775f746f6b656e1677697468647261775f776974686f75745f6576656e740b6465736372697074696f6e046e616d650375726905636f756e74076d6178696d756d0b636f6c6c656374696f6e730a746f6b656e5f64617461116275726e5f6361706162696c6974696573116d696e745f6361706162696c697469657302696406616d6f756e740576616c75650a636f6c6c656374696f6e06737570706c790763726561746f7206746f6b656e730e6465706f7369745f6576656e74730b4576656e7448616e646c650f77697468647261775f6576656e74730a616464726573735f6f660d6e6f745f7075626c697368656408636f6e7461696e731372657175697265735f6361706162696c69747906626f72726f770a626f72726f775f6d75740769735f736f6d65036e657711616c72656164795f7075626c69736865640361646406737472696e6704736f6d65046e6f6e650a656d69745f6576656e74106e65775f6576656e745f68616e646c6510696e76616c69645f617267756d656e7400000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000030802000000000000000308040000000000000003080300000000000000030805000000000000000308060000000000000003080700000000000000030808000000000000000308090000000000000003080a0000000000000003080b0000000000000003080c0000000000000003080d0000000000000003080e000000000000000a020d0c48656c6c6f2c20576f726c640a021918436f6c6c656374696f6e3a2048656c6c6f2c20576f726c640a02121168747470733a2f2f6170746f732e6465760a021413546f6b656e3a2048656c6c6f2c20546f6b656e0a020d0c48656c6c6f2c20546f6b656e0002012608070102052a080a2b080a2c080a2d032e0b0b01030202042f0b0c02080a0801300b0c0208070806310b0c0208070800320b0c02080708040302023308073403040201260807050202330807350306020636080a2a080a2b080a2e0b0b0103370b0b01032c080a070203380536080a2b080a080203390b0c02080708053a0b0d0108033c0b0d0108090902023308073403000100010219470b0011190c030a03290203090702111a270b032a020c040a0410000e011001380003170b0401070d111a270a0410020e011001380103220b0401070a111c270a0410020e0110013802010b040f000e01100138030c060a0610033804033305400b060f0338050c050a05140e01100414170b051505420b06010b011305010102010100010226320a0011190c070a07290220030805100b00380638073808380912022d0205120b00010b072a020f050c090a090e010c060c050b052e0b06380a2003250b090107031122270b020e01140b030600000000000000000b0412010c080b090e010b08380b020200000202082b1b070f11240c020a000e02140710112407111124060100000000000000380c11010b000e02140712112407131124080b01380d071111241105020302000102010b0b000b0111240b0211240b0311240b04380c11010204020002020801100b000b0111240b0211240b0311240b040b050b06380c0b071124110501020501000202082f96010a0011190c090a092902030b0b00010702111a270a092a020c0b0a090b010b0211060c0e0a0b10050e0e1006380a03200b0b010b000107041122270a0b10000e0e380020032d0b0b010b0001070c1122270a0b0f050e0e1006380e0c0a0a0a100714060100000000000000160a0a0f07150a0a10083804034005500a0a1008380f140b0a10071426034f0b0b010b000107052705520b0a010b04035505590a05380c0c08055b380d0c080b080c0c0e0e1006140b030e0e1009140b060b0c0b0712060c0d0a0b0f000e0e0b0d38100a0b0f020e0e0e0e14120038110b0b0f0a0e0e0e0e14120438120a05060000000000000000240381010592010b092908200386010588010a0011120a000e0e110f0a000b0011190e0e0b0511140594010b00010b0e020601000001050b000b010b021207020701000001070b000b0111240b0211241207020802000102010a0b000b0111240b0211240b031124380d110102090200020208010f0b000b0111240b0211240b0311240b040b05380d0b061124110501020a0100010831250a0011190c040a042908200308050a0a0011120a042a080f0b0c050b050e0110010c030c020b022e0b03381320031a051f0b000e011001110f05210b00010b040b01110b020b0100010833110a002a080c020b020f0c0e011001140e01100414120338140b000b01110c020c01000108361e0a0029080306070e111a270b002a080c030a03100b0e011001381303140b03010701111a270b030f0b0e01100138150c020b020b011113020d0100010818090b000b020b0311170c040b010b04110a020e02000108040b0b020b030b0411070c060b000b010e060b05110d020f01000108372e0b0011190c080a082908030b0b0101070e111a270b082a080f0b0c090a090a010c030c020b022e0b0338132003200b09010b010107001122270b090c070a010c060b01140c050b070b060b050600000000000000001205381602100200010804090b010b020b0311070c040b000e04110f021102000001030b001112021201000001090a0038170a0038180b00381912082d080213010000011a0a0010010e01100121030b0b00010708112a270a001004140e01100414160b000f04150b0113050101021401000202083a720a02100d142902030c0b02010b00010702111a270b0011192a020c070a07100a0a02381a031c0b02010b0701070b111c270b07100a0a02381b010a02100d142902032b0b02010702111a270a02100d142a020c050a0510000a023800033c0b02010b0501070d111a270b050f000a0238030c090a0910033804034605690a090f0338050c080a08140a03160a08150a09100e3804035505640b090f0e38050c060b08140b06142503630b020107092705680b09010b0801056b0b09010b010b02140b031205110b021501000001030b00100102160100010818090b000b010b0311170c040b020b04110b0217010001083b120a0011190c030b032a080c040b040f0f0a01140a021209381c0b000b010b0211180218010001083c2f0b0011190c050a052908030b0b0101070e111a270b052a080f0b0c070a070a010c040c030b032e0b043813031f0b07010b01010701111a270b070a0138150f040c060a06140a02170b06150b01140b02120502020105000202060405010200070101030104070202030800080107000603080200", "abi": { @@ -3794,7 +3794,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x6dc54b259b9bb92b3b16b65951338f1a968cd840df016cc3bd13423fb357c6b9", + "state_key_hash": "0x97edd9afe177e7c76218a23ada412303be27ec336ed415b85ef6576815464ac7", "data": { "bytecode": "0xa11ceb0b050000000b01000c020c1e032a920104bc011c05d801a20207fa03e20208dc062006fc06680ae4070f0cf307c1030db40b02000000010002000300040005000008000506070004040402000100010505040001170700020207010000000700010000080201000009000100000a020100000b030400000c050100000d060100000e070100031005090004110b0c02000004120b0e02000004130f1002000004141101020000051512010005161304000118151400021916170100051a180100021b01170100050b190400041c0111020004041d1b1c020000041e1d01020000051f1e1f0005202021000521220100090a0a0d0b0d0a0a0c0d10101210140a150a140d160a150d090d160d03060c0506080100050c05050a020a0202060c0301080101060c04060c0506080103060c05050a020a020305070b0202050b020208010803070b0202080108030b020208010803050803010502050b02020801080302070b02020900090106090001070901020801080301090101060b0202090009010103010b02020900090102060c080303050a020a02010804010a02010900010b0501090005060c0804080408040b05010308060c08040804080401030b05010308040a070b0202050b0202080108030605070b020208010803060801070b020208010803070803070b0202050b020208010803050803080102060b020209000901060900010103070b020209000901060900090103060c0608010301080301060803010608010207080308030e546f6b656e5472616e7366657273054153434949064f7074696f6e065369676e6572055461626c6505546f6b656e07546f6b656e49640c63616e63656c5f6f666665721363616e63656c5f6f666665725f73637269707405636c61696d0c636c61696d5f7363726970740c6372656174655f746f6b656e1a696e697469616c697a655f746f6b656e5f7472616e7366657273056f666665720c6f666665725f7363726970740e70656e64696e675f636c61696d730a616464726573735f6f660a626f72726f775f6d75740672656d6f7665066c656e6774680d64657374726f795f656d7074790d6465706f7369745f746f6b656e136372656174655f746f6b656e5f69645f72617706537472696e6706737472696e6704736f6d65116372656174655f636f6c6c656374696f6e046e6f6e65036e657708636f6e7461696e73036164640e77697468647261775f746f6b656e08746f6b656e5f6964056d6572676500000000000000000000000000000000000000000000000000000000000000010a020d0c48656c6c6f2c20576f726c640a021918436f6c6c656374696f6e3a2048656c6c6f2c20576f726c640a02121168747470733a2f2f6170746f732e6465760a021413546f6b656e3a2048656c6c6f2c20546f6b656e0a020d0c48656c6c6f2c20546f6b656e0002010f0b0202050b020208010803000100010008230a0011080c060b062a000f000c030a030e0138000c040a040b0238010c070b042e3802060000000000000000210316051d0b030e0138030c050b053804051f0b03010b000b07110d020102000100040a0b020b030b04110e0c050e000b010e05110002020100010008230a0011080c060b012a000f000c030a030e0638000c040a040b0238010c070b042e3802060000000000000000210316051d0b030e0638030c050b053804051f0b03010b000b07110d020302000100040a0b020b030b04110e0c050e000b010e0511020204000000141b0700110f0c020a000e02140701110f0702110f060100000000000000380511110b000e02140703110f0704110f090b0138060702110f1113020500000001050b00380712002d000206010001001a410a0011080c0b0a0b2900200308050a0a0011050b0b2a000f000c0a0a0a0e010c050c040b042e0b053808200319051d0a0a0e013809380a0b0a0e0138000c080b000b020b0311170c0c0e0c1118140c0d0a080e0d0c070c060b062e0b07380b0334053c0b080e0d380c0c090b090b0c111905400b080e0d0b0c380d020702000100040b0b020b030b04110e0c060e000b010e060b05110602000000", "abi": { @@ -3899,7 +3899,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x48b12d7c6cecb34c8eb16fbcd16aa94e0af6d25d801ff614cfe256255f4a86e4", + "state_key_hash": "0x20ecbb8c86eb9eedbcb469f8379761e2cdb777b7af6a85b13dbad6aaf12bee5d", "data": { "bytecode": "0xa11ceb0b050000000801000402040403080a051204071637084d200c6d0b0f780200010002010304000004000100010500010001080000074163636f756e740e5472616e73616374696f6e4665650854657374436f696e04436f696e086275726e5f666565086275726e5f67617300000000000000000000000000000000000000000000000000000000000000010003000001030b00110102000000", "abi": { @@ -3926,7 +3926,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x420ef68d76eb27ca3b115aa143bcbb21fed31303e38840c11e7a0a88046e4dfa", + "state_key_hash": "0xfe15931e94f20d4d54b8ab041e17ae70daa9b4fa3f78c67767006a23b11357f3", "data": { "bytecode": "0xa11ceb0b050000000b01000c020c04031034044406054a35077fa10208a0032006c0032c0aec03090cf50390010d850504000000010002000300040005000008000006000100000701020000080302000009040100040c010100030d050100010e060600050f0a02010005100c02010002110101000709070b080b03060c0a0a020100010101060a02020c0101060c0103010608000201060800010201060a0900010a0202060a0900060900010708001b5472616e73616374696f6e5075626c697368696e674f7074696f6e064572726f72730f5265636f6e66696775726174696f6e0f53797374656d4164647265737365730954696d657374616d7006566563746f720a696e697469616c697a651169735f6d6f64756c655f616c6c6f7765641169735f7363726970745f616c6c6f7765641d7365745f6d6f64756c655f7075626c697368696e675f616c6c6f776564117363726970745f616c6c6f775f6c697374196d6f64756c655f7075626c697368696e675f616c6c6f7765640e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c69736865640869735f656d70747908636f6e7461696e730b7265636f6e6669677572650000000000000000000000000000000000000000000000000000000000000001030801000000000000000520000000000000000000000000000000000000000000000000000000000a550c180002020a0a0a020b0100010000011211040a0011050701290020030c0b000107001106270b000b010b0212002d00020101000100070707012b000c000b00100014020201000100081e0a003800030405080b0001080207012b000c020a0210013801031005170b00010b0201080c01051c0b0210010b0038020c010b010203020001000d0b0e00110507012a000c020b010b020f00151109020001000000", "abi": { @@ -4002,7 +4002,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x18cc12a7c4f97627fbfa0ef6cc5cc6a0e45a3950e5cf30b2c01926c731fdb227", + "state_key_hash": "0x58e6de2a4152511fe9e86ce12c65d095278053f32872f3e69e74cc3e248943de", "data": { "bytecode": "0xa11ceb0b050000000a01000a020a0c03162d0543220765bf0408a4052006c405360afa052b0ca50694020db9081a000000010002000300040005070000060700000008000007000100000802010004180101000319040100011a050500041b010100011c050500011d050500021e01010004060c0a020a0203000c0c030303030303030303030301080001060c01030107080008564d436f6e666967064572726f72730f5265636f6e66696775726174696f6e0f53797374656d4164647265737365730954696d657374616d700c476173436f6e7374616e74730b4761735363686564756c650a696e697469616c697a65117365745f6761735f636f6e7374616e74731b676c6f62616c5f6d656d6f72795f7065725f627974655f636f737421676c6f62616c5f6d656d6f72795f7065725f627974655f77726974655f636f7374196d696e5f7472616e73616374696f6e5f6761735f756e697473186c617267655f7472616e73616374696f6e5f6375746f666616696e7472696e7369635f6761735f7065725f627974651b6d6178696d756d5f6e756d6265725f6f665f6761735f756e697473166d696e5f70726963655f7065725f6761735f756e6974166d61785f70726963655f7065725f6761735f756e69741d6d61785f7472616e73616374696f6e5f73697a655f696e5f6279746573176761735f756e69745f7363616c696e675f666163746f721464656661756c745f6163636f756e745f73697a6514696e737472756374696f6e5f7363686564756c650f6e61746976655f7363686564756c650d6761735f636f6e7374616e74730c6761735f7363686564756c650e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c6973686564106173736572745f6f7065726174696e6710696e76616c69645f617267756d656e740d6e6f745f7075626c69736865640b7265636f6e666967757265000000000000000000000000000000000000000000000000000000000000000103080000000000000000030801000000000000000520000000000000000000000000000000000000000000000000000000000a550c1800020b09030a030b030c030d030e030f031003110312031303010203140a02150a0216080002020117080100010000032111020a0011030702290220030c0b000107001104270604000000000000000609000000000000000658020000000000000658020000000000000608000000000000000600093d00000000000b0306102700000000000006001000000000000006e80300000000000006200300000000000012000c040b000b010b020b04120112022d02020102000102064a11050e0011030a070a0825030a07011106270a030a062503110701110627070229020317070011072707022a020f000f010c0c0b010a0c0f02150b020a0c0f03150b030a0c0f04150b040a0c0f05150b050a0c0f06150b060a0c0f07150b070a0c0f08150b080a0c0f09150b090a0c0f0a150b0a0a0c0f0b150b0b0b0c0f0c15110802020001020000000100020003000400050006000700080009000a00", "abi": { @@ -4145,7 +4145,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x7b913990d5df68402b1438807a139b8fdc76cdf985ab635a6f09166406c6fe97", + "state_key_hash": "0x33e2b3bad19e91f0ad42f5d6f6aa3bec1303fceac2fd9188d8758c5bc2c27d21", "data": { "bytecode": "0xa11ceb0b0500000006010002030223052517073cc30108ff01200c9f023100000001000100000202010000030201000004030100000500010000060301000007040100020c0500030c050a02050c050a020a020a02030c0a02051256616c696461746f725365745363726970740d6164645f76616c696461746f72186372656174655f76616c696461746f725f6163636f756e74216372656174655f76616c696461746f725f6f70657261746f725f6163636f756e741972656769737465725f76616c696461746f725f636f6e6669671072656d6f76655f76616c696461746f72247365745f76616c696461746f725f636f6e6669675f616e645f7265636f6e666967757265167365745f76616c696461746f725f6f70657261746f7200000000000000000000000000000000000000000000000000000000000000010002000001010201020000010102020200000101020302000001010204020000010102050200000101020602000001010200", "abi": { @@ -4240,7 +4240,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x676c1655de1362f3510ed359bafb9c86d69f436ac28477427f1e92a7594e50c7", + "state_key_hash": "0x758bc607dd636ce92924be393c6ed20588651516f5e02f8d218ccbad404eb5fa", "data": { "bytecode": "0xa11ceb0b050000000801000203026004621205745907cd01930108e002200680030a0c8a038904000000010001010000020203010000030405010000040607010000050801010000060108010000070609010000080a07010000090a0b0100000a0c0d0100000b0e010100000c040d0100000d0c010100000e0d080100000f0f0101000010040d01000c0d070d090d0a0d040d080d010d0e0d050d02070a09000a09000002060a0900030106090002070a0900030107090002060a09000609000101010a090002010301060a0900010301070a090001090002070a0900090003070a090003030203030303070a0900030303030306566563746f7206617070656e6406626f72726f770a626f72726f775f6d757408636f6e7461696e730d64657374726f795f656d70747905656d70747908696e6465785f6f660869735f656d707479066c656e67746808706f705f6261636b09707573685f6261636b0672656d6f766507726576657273650973696e676c65746f6e04737761700b737761705f72656d6f76650000000000000000000000000000000000000000000000000000000000000001030800000000000000000001000001110d0138000e013801200307050c0a000d013802380305020b00010b0138040201010200020102000301000010220600000000000000000c020a0038050c030a020a0323030a051c0a000a0238060a0121031105170b00010b010108020b02060100000000000000160c0205050b00010b0101090204010200050102000601000010240600000000000000000c020a0038050c030a020a0323030a051d0a000a0238060a0121031105180b00010b0101080b02020b02060100000000000000160c0205050b00010b010109060000000000000000020701000001050b003805060000000000000000210208010200090102000a0102000b01000011260a002e38050c040a010a04260309050d0b00010700270b04060100000000000000170c040a010a0423031605230a000c030a010c020b01060100000000000000160c010b030b020a01380705110b003802020c01000012270a002e38050c030a03060000000000000000210309050c0b0001020600000000000000000c020b03060100000000000000170c010a020a0123031705240a000a020a0138070b02060100000000000000160c020b01060100000000000000170c0105120b0001020d010000080738080c010d010b0038030b01020e0102000f0100000b160a002e38012003090b00010700270a002e3805060100000000000000170c020a000b010b0238070b0038020200", "abi": { @@ -4495,7 +4495,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xdec45f7e3f30d6fc6197b91d3ddac37ae607eb051cd91c7792c012d88bc7d004", + "state_key_hash": "0x16f29e0e24c5e8b2645b3f1384ed2daebdd7c33840fa2f05cc839c0cf7aa88d9", "data": { "bytecode": "0xa11ceb0b050000000a01000a020a04030e280536120748b70108ff0120069f02360ad502050cda025f0db903020000000100020003000400000f000005000100000602010004080101000309030100010a040400010b040400010c040400020d01010002060c0300020c0301060c010302070800030756657273696f6e064572726f72730f5265636f6e66696775726174696f6e0f53797374656d4164647265737365730954696d657374616d700a696e697469616c697a650b7365745f76657273696f6e056d616a6f720e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c69736865640d6e6f745f7075626c697368656410696e76616c69645f617267756d656e740b7265636f6e666967757265000000000000000000000000000000000000000000000000000000000000000103080000000000000000030801000000000000000520000000000000000000000000000000000000000000000000000000000a550c18000201070300010000011111020a0011030702290020030c0b000107001104270b000b0112002d00020102000100051d0e001103070229000308070011052707022b001000140c030b030a01230314070111062707022a000c020b010b020f0015110702000000", "abi": { @@ -4549,7 +4549,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -4562,7 +4562,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x57df581bdc8eb537f2e0daefe0c91bcefd4e184d31d5a25fe8728c69cc560486", + "state_key_hash": "0x4a7c80fdf8d876013ce53cb1058ca7c046e8f1dc539c89cbfc9f2b5dac233e58", "data": { "type": "0x1::Account::ChainSpecificAccountInfo", "data": { @@ -4581,7 +4581,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -4605,7 +4605,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x17589738079487b2af997d2ed0bd6d4332205e7c450220e74566c09b1905e617", + "state_key_hash": "0xe4b5a2dae9764d6d6cfd5b676c01dbb6a218442c72c686f07fc5274282686acf", "data": { "type": "0x1::ChainId::ChainId", "data": { @@ -4616,7 +4616,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x2d7368fa67450cf0b7eed0331f147d354815137feb76fff2b7c0fc60ad5bb800", + "state_key_hash": "0xc43de035d74281f24a805c20a82a3d93f2185a4e6846fe18196a2a625d2d26b1", "data": { "type": "0x1::ConsensusConfig::ConsensusConfig", "data": { @@ -4627,7 +4627,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x3481c9601d3bb1d800c5b728e684b1201dfc2829d75259d5ef5ea4b045b15a53", + "state_key_hash": "0x8d53fa2b89941fc2da484da444446d8e7185ba61cb75eebc12e8152ff5bf36cf", "data": { "type": "0x1::GUID::Generator", "data": { @@ -4638,7 +4638,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x764438e1151d8c09aa5f9043996c768cd364e7cb7df8621503f56c554da89f02", + "state_key_hash": "0x1142e7b3a1d48f45ae2ecc9bd087e889f0b53cc7026c4c29e07450e475ad0b04", "data": { "type": "0x1::Reconfiguration::Configuration", "data": { @@ -4662,7 +4662,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x9edd1192ba89cceabd7f130fca7e6cba070420056b0b149f76e567026b0a6cc4", + "state_key_hash": "0x96195959c5bbc51294037ff0f10379b4d06fe63f3e54f67512fede633592ea85", "data": { "type": "0x1::Stake::ValidatorSet", "data": { @@ -4688,7 +4688,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -4701,7 +4701,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x8b49e451a3bb4f865d2a238e81d34b1ac813183a4bdf7bd63aca56b49bf9d81f", + "state_key_hash": "0xa8f1383bdbe01daf7ba208c25887e098d80d93d2083430ef1508a0efbd9e4304", "data": { "type": "0x1::TestCoin::BurnCapability", "data": { @@ -4712,7 +4712,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x79a08e0b94ebb66c0dae37a07c182d46387c347aeb83c07de6109b0503c3a24e", + "state_key_hash": "0x6361dc2da389b51bf777ae884a8481cb828da9db1df3120b25046820a283770f", "data": { "type": "0x1::TestCoin::CoinInfo", "data": { @@ -4723,7 +4723,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x3f1c23fdebea87635e8e87e193c97b9e2748a6f90c09f3c8b22677803a4e5b80", + "state_key_hash": "0x627f093ce5b314d9b2695baf5325baca9d9385f0fb2967738bda3daef48f9def", "data": { "type": "0x1::TestCoin::Delegations", "data": { @@ -4734,7 +4734,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x8e3acba2e68effb510e78950ae72f9b491614c742266e73b19f46210ef729ba7", + "state_key_hash": "0x2f2986d12a91f80a77cd5da67fbb0cee4ccdd3b7d8d9d3e33e24d39a3e9ffc23", "data": { "type": "0x1::TestCoin::MintCapability", "data": { @@ -4745,7 +4745,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xcf66e2ca4e76897cebaa518a193ad55e73868487052899ce87b2d0d4c9496316", + "state_key_hash": "0x3f3419f54896fc75b52bd5882bad94abe95723d5090b37e02bee48f9c9d28337", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -4779,7 +4779,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -4790,7 +4790,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xeee160d734240e9a9250c523c7aefc2fa613bf0e63f5445622efcab6d1fcce1d", + "state_key_hash": "0xf130a53e7173ea06c6587ab85d433816dbc873a55719df178f0e91eb023457c3", "data": { "type": "0x1::TransactionPublishingOption::TransactionPublishingOption", "data": { @@ -4802,7 +4802,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xda497579d98e160f73853a824ab66764eb06ac6f5e7d256e02192948c2cf608f", + "state_key_hash": "0x44acb120d14fb38c5b2ca3173940b0b459c6a9b925d4f5aaf0c8304813bb0376", "data": { "type": "0x1::VMConfig::VMConfig", "data": { @@ -4829,7 +4829,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x40ac0f46a93aa0ea000476aca120a17a18418f173264d4c7d72ff25b11395377", + "state_key_hash": "0x38620e2357b23bfdd3739a4fde0d9db9bdb4311215c4001712e6af8e655580aa", "data": { "type": "0x1::Version::Version", "data": { @@ -4840,7 +4840,7 @@ { "type": "write_resource", "address": "0xf85fd00e30cd388d2609db24d6cc44f2652f27413456938eaa059f65231647cc", - "state_key_hash": "0xd20b0f35cf774f42e920b02768b0fe4de80a67c21f44b1d9c075ebb138546194", + "state_key_hash": "0x77c043f9a9bd64f7291bcdb247a4dc59d1be33004dbc34731e0a6139325ff0b8", "data": { "type": "0x1::Account::Account", "data": { @@ -4853,7 +4853,7 @@ { "type": "write_resource", "address": "0xf85fd00e30cd388d2609db24d6cc44f2652f27413456938eaa059f65231647cc", - "state_key_hash": "0x248eb725fcc98464e56aea55db2ee69f7054230a809efef43f366798eef56078", + "state_key_hash": "0x66a959711cdb54d4b89e29289ecf27b43ec60a43019c267ad9dc217b157d6f92", "data": { "type": "0x1::Stake::StakePool", "data": { @@ -4876,7 +4876,7 @@ { "type": "write_resource", "address": "0xf85fd00e30cd388d2609db24d6cc44f2652f27413456938eaa059f65231647cc", - "state_key_hash": "0xe6e49da9ea0e37ee7dbad1e558ca481643330315bb479b9859b20378ec14a349", + "state_key_hash": "0xb7ef36abe89812a9a0dd1bd475e62b47c17ee3c28e6f40b3858d91cbef5ff0e0", "data": { "type": "0x1::Stake::ValidatorConfig", "data": { @@ -4895,7 +4895,7 @@ { "type": "write_resource", "address": "0x1", - "state_key_hash": "0x3502b05382fba777545b45a0a9d40e86cdde7c3afbde19c748ce8b5f142c2b46", + "state_key_hash": "0xca8d050aeb41633812833df3ad073c1982c691d91c8c864eac95af94bef29a1c", "data": { "type": "0x1::Account::Account", "data": { @@ -4908,7 +4908,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x1016dada6d2f8ae7d9c9de56fcba087694a08ac88915a9600f76b561b1b40709", + "state_key_hash": "0x81a57f7a20408b6686204b0d69a72138700097bb4e08587f9dbe50861aebf702", "data": { "bytecode": "0xa11ceb0b050000000b010006020604030a3c04460a0550410791016508f60120069602140aaa02060cb0028a010dba030200000001000200000700000300010000040201000005020300000601040000070001000205070301000109080800020a090101000206010a0100020b070c010002070d0e010005060706080609060a060207080005000206080005010101080002070a050605010502060a0900060900010302070a09000900010a090004070a050605010302010302070a0900030109000341434c064572726f727306566563746f72036164640f6173736572745f636f6e7461696e7308636f6e7461696e7305656d7074790672656d6f7665046c69737410696e76616c69645f617267756d656e7409707573685f6261636b08696e6465785f6f6600000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000000201080a050001000005150a000f000e010c030c020b022e0b0338002003100b000107001106270b000f000b013801020101000001080b000b01110203070701110627020201000001050b0010000e013800020301000001033802120002040100000b180a000f000e010c030c020b022e0b0338030c050c040b0403120b000107011106270b000f000b0538040102000000", "abi": { @@ -4992,7 +4992,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x2919ba9c5f550ed4b85f3735ef6129545750d68d91a11574e905939dd78055f8", + "state_key_hash": "0x5e167f4a4805ebcf2bcba6ff7c6c014fc834548a54ba18723701caf483ddc696", "data": { "bytecode": "0xa11ceb0b050000000b01000802080e031671048701100597015b07f201fa0108ec0320068c040a0a96040b0ca104d0020df10604000000010002000300040700000507000202070100000006000100000700020000080304000009040300000a050600000b040100000c040100000d000700000e080300000f090a0000100605000011060b00030d0d07010003130e0f010001140707000315101101000316120a010002171301010002181411010002190a140100021a111401000c040d040f041004110512051305140501060801010101060a020108000102010801010a0201030107080102070801080000010b020108010302030301060a090002060a0900030106090001070a090001090002070a0900090001060b02010900010b0201090003030302054153434949064572726f7273064f7074696f6e06566563746f72044368617206537472696e6718616c6c5f636861726163746572735f7072696e7461626c650861735f6279746573046279746504636861720a696e746f5f62797465731169735f7072696e7461626c655f636861720d69735f76616c69645f63686172066c656e67746808706f705f6368617209707573685f6368617206737472696e670a7472795f737472696e6705627974657306626f72726f7710696e76616c69645f617267756d656e7408706f705f6261636b09707573685f6261636b0769735f736f6d650c64657374726f795f736f6d65046e6f6e6504736f6d650000000000000000000000000000000000000000000000000000000000000001030800000000000000000002010802010201120a02000100000c230a00100038000c030600000000000000000c02280a020a0323030c05200a0010000a023801140c010b011105200317051b0b000109020b02060100000000000000160c020506280802010100000a030b001000020201000004050b0013000c010b0102030100000a090a00110603060700110e270b001200020401000006050b0013010c010b010205010000010e0a003120260305050a0b00317e250c01050c090c010b0102060100000a040b00317f2502070100000a040b001101380002080100000a050b000f003802120002090100000a070b000f000e011001143803020a0100000b0c0b00110b0c010e01380403090700110e270b013805020b01000015210e0038000c020600000000000000000c01280a010a0223030b051c0e000a013801140c030b03110620031505173806020b01060100000000000000160c010505280b0012013807020100000000", "abi": { @@ -5172,7 +5172,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x2fe51d3f72e53bc3068e56d32558e8b4f4709a6342457a41e8bd78dc95f78470", + "state_key_hash": "0x582546fbd658536b476ed5d2a7a3348d1b56061a629a49f2e5ffa249fcc07ef8", "data": { "bytecode": "0xa11ceb0b050000000c01001602160c0322d60104f8010e058602a80107ae03fb0708a90b2006c90be8020ab10e260cd70ecf060da615040faa1502000100020003000400050006000700080009000a000b00010c00000c080006340400000d000100000e000200000f0002000010030400001101050000120005000013060100001400070000150004000016000800001709010000180a010000190b0100001a0a0100001b020100001c030100001d0c0100001e0d0100001f0e0100062c0f0100032d080800032e080800012f110401000a301308010005310f14000a3215010100073301010003350808000636171800083718010005380f00000339080800093a010700033b0808000a3c1a110100073d010800023e011200043f04040006140007000640000800034108080009421d07001600171219121700170422002204010500020c0a0202060c0a02010a02010c050c03030303010101030a060c050a020a020a020a020a020a020a0201070c030a0203030302090c030a020a050a0a0203030302080c030a02030303020a02030c0301050c030a02030201060c020a020c01060900010201060a090001060502070a09000a09000607080005080203030302060c03010802050303050608000a0202060a09000304030306080005020708000501060a020747656e65736973074163636f756e740342435307436861696e4964064572726f72730448617368065369676e65720854657374436f696e0954696d657374616d700e5472616e73616374696f6e4665651b5472616e73616374696f6e5075626c697368696e674f7074696f6e06566563746f7218436861696e53706563696669634163636f756e74496e666f0e6372656174655f6163636f756e74176372656174655f6163636f756e745f696e7465726e616c186372656174655f6163636f756e745f756e636865636b6564196372656174655f61757468656e7469636174696f6e5f6b65791d6372656174655f636f72655f6672616d65776f726b5f6163636f756e740d6372656174655f7369676e6572086570696c6f677565096578697374735f6174166765745f61757468656e7469636174696f6e5f6b6579136765745f73657175656e63655f6e756d6265720a696e697469616c697a650f6d6f64756c655f70726f6c6f6775651b6d756c74695f6167656e745f7363726970745f70726f6c6f6775650f70726f6c6f6775655f636f6d6d6f6e19726f746174655f61757468656e7469636174696f6e5f6b657922726f746174655f61757468656e7469636174696f6e5f6b65795f696e7465726e616c0f7363726970745f70726f6c6f6775651177726974657365745f6570696c6f6775651177726974657365745f70726f6c6f6775651261757468656e7469636174696f6e5f6b65790f73657175656e63655f6e756d6265720c73656c665f616464726573730b6d6f64756c655f616464720b6d6f64756c655f6e616d65147363726970745f70726f6c6f6775655f6e616d65146d6f64756c655f70726f6c6f6775655f6e616d651677726974657365745f70726f6c6f6775655f6e616d65196d756c74695f6167656e745f70726f6c6f6775655f6e616d6512757365725f6570696c6f6775655f6e616d651677726974657365745f6570696c6f6775655f6e616d651663757272656e63795f636f64655f726571756972656408726567697374657211616c72656164795f7075626c697368656410696e76616c69645f617267756d656e7408746f5f6279746573066c656e6774680e626f72726f775f6164647265737306617070656e640e6173736572745f67656e6573697304436f696e0e6c696d69745f6578636565646564087769746864726177086275726e5f6665650a616464726573735f6f661072657175697265735f616464726573731169735f6d6f64756c655f616c6c6f7765640d696e76616c69645f737461746506626f72726f770b6e6f775f7365636f6e64730367657408736861335f3235360a62616c616e63655f6f660d6e6f745f7075626c69736865641169735f7363726970745f616c6c6f776564000000000000000000000000000000000000000000000000000000000000000103080000000000000000030807000000000000000308060000000000000003080400000000000000030805000000000000000308030000000000000003080a00000000000000030809000000000000000308020000000000000003080b0000000000000003080100000000000000030808000000000000000410ffffffffffffffff00000000000000000308ec030000000000000308ef030000000000000308ed030000000000000308e9030000000000000308f2030000000000000308f1030000000000000308f0030000000000000308f4030000000000000308f3030000000000000308eb030000000000000308ea030000000000000308ee0300000000000005200000000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000000010520000000000000000000000000000000000000000000000000000000000a550c18000203200a02210322050102092305240a02250a02260a02270a02280a02290a022a0a022b010002000005070b001101010c010e011113020101000001180a00290020030707001114270a00071922030e07031115270a00071a22031507021115270b001102020200000010170a0011050c020e0038000c010e01380106200000000000000021030e07051115270e020a010600000000000000000b0012002d000b020b01020300000004110b010c020d020b001118380038020e02380106200000000000000021030f07051115270b0202040300000507111a071a1102010c000b000205000200060000010016380a030a0426030707041115270b030b04170c080a02350a083518070c2503160704111b270b020b08180c0a0e000b0a111c0c070b07111d0e00111e0c060a0611090c090a0935070c23032e070a111b270b062a000c050b09060100000000000000160b050f0015020701000001030b00290002080100010001050b002b0010011402090100010001050b002b00100014020a01000001170a00111e071b21030a0b00010708111f270b000b010b020b030b040b050b060b070b080b0912012d01020b00000100010e1120030507121121270b000b010b020b030b040b050b06110d020c00000100193c0b000b010b020b050b060b070b08110d0e0338030c0a0e0438040a0a21031307141115270600000000000000000c090a090a0a23031a053b0e030a093805140c0b0a0b11070325070d1115270b0b2b000c0c0e040a093806140c0d0b0d0b0c10011421033607101115270b09060100000000000000160c090515020d000001001b5911230b0523030707181115270e00111e0c0a11240b06210311070e1115270a0a29000317070d1115270a0a2b000c090b0211250a091001142103260b090107101115270a0135070c2303300b09010715111b270a010a0910001426033b0b090107171115270b010b0910001421034407161115270b030b04180c080a0a1126034e070f1115270b0a11270c070b070b08260358070f111527020e0200010001040e000b01110f020f010001001c190b00111e0c030a031107030907001128270e01380106200000000000000021031107051115270b032a000c020b010b020f0115021000000100010f0e071129030607131121270b000b010b020b030b040b050b06110d02110000000103070b111527120000000103071111152700010000000000", "abi": { @@ -5361,7 +5361,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xe7c46aba2fa4aa3b56c0adee4075dc8d2518ea3d3c35d094584f52c44d7e54e7", + "state_key_hash": "0x7736050f93a8f9cce25ed5fa6aec37cd51258e1527fd7a5fee24baf51bb44743", "data": { "bytecode": "0xa11ceb0b0500000006010002030206050807070f0d081c200c3c04000000010001010001060900010a020342435308746f5f627974657300000000000000000000000000000000000000000000000000000000000000010001020000", "abi": { @@ -5392,7 +5392,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xaee1008f6bec7a796661e761e643736d4ce392281ee2efe1f97f3fc7f556b364", + "state_key_hash": "0xb9a25ffae8304b435a01dc75f376743dedbfa100e7e67f273c4f71fb16433738", "data": { "bytecode": "0xa11ceb0b050000000b010006020604030a4604500a055a4b07a501a30108c8022006e8021e0a8603080c8e03f1030dff0604000000010002000007000003000100000402030000050003000006030400000705060000080506000009050600020407030100010b030300020c08090100020d060b0100020e0c060100020f0e0f0100070109010a010b010c010206080003010101060800010301080002070800030001060a090002060a09000301060900020a0103010a090002070a0900090001070102070a090003010709000607080003070103030309426974566563746f72064572726f727306566563746f720c69735f696e6465785f736574066c656e677468206c6f6e676573745f7365745f73657175656e63655f7374617274696e675f6174036e6577037365740a73686966745f6c65667405756e736574096269745f6669656c6410696e76616c69645f617267756d656e7406626f72726f7705656d70747909707573685f6261636b0a626f72726f775f6d7574000000000000000000000000000000000000000000000000000000000000000103080000000000000000030801000000000000000308000400000000000000020204030a0a010001000006110a010a001000380023030b0b000107001108270b0010000b01380114020101000006040b0010003800020201000003260a010a0010011423030b0b000107001108270a010c020a020a0010011423031405220a000a02110020031a051d0b000105220b02060100000000000000160c02050d0b020b011702030100000a250a0006000000000000000024030707011108270a00070223030e07011108270600000000000000000c0238020c01280a020a0023031805200d010938030b02060100000000000000160c020512280b000b01120002040100000d140a010a001000380023030b0b000107001108270b000f000b0138040c02080b02150205010000105d0a010a0010011426030705220a00100038000c070600000000000000000c050a050a07230312051f0a000f000a0538040c04090b04150b05060100000000000000160c05050d0b0001055c0a010c060a060a0010011423032b05450a000a060c030c020b022e0b0311000335053b0a000a060a0117110405400a000a060a011711060b06060100000000000000160c0605240a001001140b01170c060a060a00100114230352055a0a000a0611060b06060100000000000000160c06054b0b000102060100000d140a010a001000380023030b0b000107001108270b000f000b0138040c02090b0215020001000000", "abi": { @@ -5505,7 +5505,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x87b07aa352041a9cb02fdf5ef467f5b2c0be6f867836ecd668e51b9972386bee", + "state_key_hash": "0x126a80bbede56bde59cad7553844a41e3a014d1c522946bf64428bab88e0ccb8", "data": { "bytecode": "0xa11ceb0b050000000b01000e020e0e031c5704730405773107a801f303089b052006bb05580a9306190cac06c0010dec0706000000010002000300040005000600070800000806000210040106010009000100000a010200000b030100000c01040006150101000516060100041707040001180202000619080100021a0a010106031b010200031c010100011d020200061e010100051f06010001200202000221060b010609091009050c03030a050500010302060c030101020107080001060c010503060c050301080102070b020109000900010b0201090005426c6f636b064572726f7273054576656e740f5265636f6e66696775726174696f6e055374616b650f53797374656d4164647265737365730954696d657374616d700d426c6f636b4d657461646174610d4e6577426c6f636b4576656e740e626c6f636b5f70726f6c6f677565186765745f63757272656e745f626c6f636b5f68656967687419696e697469616c697a655f626c6f636b5f6d657461646174610e69735f696e697469616c697a6564066865696768740e65706f63685f696e7465726e616c106e65775f626c6f636b5f6576656e74730b4576656e7448616e646c6505726f756e640870726f706f7365721470726576696f75735f626c6f636b5f766f7465731174696d655f6d6963726f7365636f6e6473106173736572745f6f7065726174696e67096173736572745f766d1469735f63757272656e745f76616c696461746f721072657175697265735f61646472657373127570646174655f676c6f62616c5f74696d650a656d69745f6576656e74196c6173745f7265636f6e66696775726174696f6e5f74696d650b7265636f6e6669677572650d6e6f745f7075626c69736865640e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c6973686564106e65775f6576656e745f68616e646c6500000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000052000000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000a550c180002030d030e030f0b0201080101020411031205130a0514030000000100053511040e0011050a040702210308050b080c05050e0a0411060c050b050313070111072707032a000c060e000a040a0211080a06100014060100000000000000160a060f00150a060f010b010b040b030a02120138000b02110a170b061002142403330534110b020101000100010a110303050700110c2707032b0010001402020100000113110d0a00110e110320030b0b00010700110f270a000600000000000000000b010b00380112002d0002030000000103070329000200000002000100", "abi": { @@ -5590,7 +5590,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xfe8b9a022a52739d1e52f5391da7cb6e9caf54e93962f3d727c49bee337d240a", + "state_key_hash": "0x5a000c911bcda5efc11f5981c28fdedd194b3bfb8677b0681a269a8653cb46bb", "data": { "bytecode": "0xa11ceb0b050000000d01000802081803206e048e011205a00178079802ae0208c6042006e604140afa04150b8f05080c9705d8020def07080ef707080000000100020003000403010001000508010001000608010001000702010001000800010100000900020100000a03040102000b00040100000c05040100000d06070100000e08040102000f0904010000100a07010000110b07010003140d0e010003150304010002160b070001170f0f0003180410010003190d120100031a130c0100011b0f0f00011c0f0f00090c0a0c0b0c0e0702070f0c100c06070a0702060c060900010b00010900010b0301090002070a0900090000030b00010900060900060c020b03010900060900010502070a0900060900030b0001090006090005020b0001090006090001060c01090002060a090006090001010103010a090004070a0900060900010302010302070a090003030505050a4361706162696c697479064572726f7273065369676e657206566563746f72034361701043617044656c65676174655374617465084361705374617465094c696e65617243617007616371756972650e616371756972655f6c696e6561720b6164645f656c656d656e74066372656174650864656c6567617465106c696e6561725f726f6f745f616464720e72656d6f76655f656c656d656e74067265766f6b6509726f6f745f616464721076616c69646174655f6163717569726504726f6f740964656c65676174657308636f6e7461696e7309707573685f6261636b0a616464726573735f6f6611616c72656164795f7075626c697368656405656d70747908696e6465785f6f660672656d6f76650d696e76616c69645f73746174650d6e6f745f7075626c69736865640000000000000000000000000000000000000000000000000000000000000001030800000000000000000308010000000000000000020112050102011205020201130a050302011205000c030c020c010c00010002010204040b00380039000201010002010204040b0038003901020200000008120a000e010c030c020b022e0b03380120030b050f0b000b01380205110b0001020301000007110a00110c0c020b023b0220030c0b00010700110d270b00380339023f0202040100010207180a02110c0c030a033b030307050a0b0201020b020e0037001439033f030e003700143c0236010b033804020501000004040e00370214020600000011150a000b010c030c020b022e0b0338050c050c040b04030d05120b000b0538060105140b00010207010002010207120a023b032003050506020a023e033a03010e003700143c0236010e023807020801000004040e003700140209000002010214280b00110c0c020a023b030307051e0a023d033703140c030a033b02031207011111270a033d0237010e023808031b07011111270b030c0105260a023b02032407001112270b020c010b01020000020003000100000c010c020c030c00", "abi": { @@ -5792,7 +5792,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xe428253ccf0b18f3d8300c6a0d29de93abcdc526e88728abeb85d57aec558935", + "state_key_hash": "0x7595d53e2b906b0789fa10b90c822b238bfa278e04f719df00ded1d65652e435", "data": { "bytecode": "0xa11ceb0b050000000a01000a020a04030e2305310e073f940108d3012006f3012c0a9f02050ca402370ddb020200000001000200030004000008000005000100000602000004080000000409000000030a030000020b030400010c05050000010202060c0201060c0105010307436861696e4964064572726f7273065369676e65720f53797374656d4164647265737365730954696d657374616d70036765740a696e697469616c697a65026964106173736572745f6f7065726174696e670e6173736572745f67656e65736973146173736572745f636f72655f7265736f757263650a616464726573735f6f6611616c72656164795f7075626c69736865640000000000000000000000000000000000000000000000000000000000000001030800000000000000000520000000000000000000000000000000000000000000000000000000000a550c18000201070200010001000006110207012b001000140201010000001211030a0011040a001105290020030d0b000107001106270b000b0112002d0002000000", "abi": { @@ -5842,7 +5842,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xd7d01f14e6e00800c0211d2e6d0626f9330cc447b0c13c10974481f8dcc7d25a", + "state_key_hash": "0xb7c7e741b8f38a60ac0b752254b6d29c9a02c65974f4be9d946ecef18794dc42", "data": { "bytecode": "0xa11ceb0b050000000b01000c020c04031024043402053615074ba60108f101200691022c0abd02060cc3023f0d82030200000001000200030004000500000800000600010000070201000409010100030a000100010b030300050c01050100020d010100050401060c0002060c0a0201030102010a090001070a020f436f6e73656e737573436f6e666967064572726f72730f5265636f6e66696775726174696f6e0f53797374656d4164647265737365730954696d657374616d7006566563746f720a696e697469616c697a650373657406636f6e6669670e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c697368656405656d7074790b7265636f6e6669677572650000000000000000000000000000000000000000000000000000000000000001030800000000000000000520000000000000000000000000000000000000000000000000000000000a550c18000201080a0200010000011111020a0011030701290020030c0b000107001104270b00380012002d00020101000100060b0b00110307012a000f000c020b010b0215110602000000", "abi": { @@ -5892,7 +5892,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x5e829d633d861f80a0d3c5c4a88204062c0ab681484838700be0d4f411727670", + "state_key_hash": "0xaa5495695d8d93a0453dcb2b2bb721e4dd1f25f5fcc2f9660cf5dfaa91dde1af", "data": { "bytecode": "0xa11ceb0b0500000007010002030237053906073f9d0108dc012006fc011e0c9a0292010000000100000000020000000003000000000400000000050000000006000000000701000000080000000009000000000a000000000b000000010302020300064572726f727311616c72656164795f7075626c697368656406637573746f6d08696e7465726e616c10696e76616c69645f617267756d656e740d696e76616c69645f73746174650e6c696d69745f6578636565646564046d616b650d6e6f745f7075626c69736865641072657175697265735f616464726573731372657175697265735f6361706162696c6974790d72657175697265735f726f6c6500000000000000000000000000000000000000000000000000000000000000010201060201ff02010a02010702010102010802010502010202010402010300010000020407000b0011060201010000020407010b0011060202010000020407020b0011060203010000020407030b0011060204010000020407040b0011060205010000020407050b001106020600000002070b00340b0131082f160207010000020407060b0011060208010000020407070b0011060209010000020407080b001106020a010000020407090b0011060200", "abi": { @@ -6018,7 +6018,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xd08a133ae22fc988a2cb20313b2568273f971076d6e313a41ecea1b5a47e3132", + "state_key_hash": "0x9a4dc0677bc96a2d212c5722516398824928072c85f75566d706a309a6d2637f", "data": { "bytecode": "0xa11ceb0b050000000c0100060206120318290441040545330778a80108a002200ac002170bd702020cd902640dbd03060ec30304000000010002000304010601000408000005060002020600000600010106000702010106000803040106000905000106000a06010106010e090a0100020f05080005080407010b000109000002070b00010900090001060b000109000106080301060c030a0203090001090001080301060900010a020102054576656e740342435304475549440b4576656e7448616e646c65144576656e7448616e646c6547656e657261746f720b47554944577261707065720e64657374726f795f68616e646c650a656d69745f6576656e740467756964106e65775f6576656e745f68616e646c651477726974655f746f5f6576656e745f73746f726507636f756e7465720461646472096c656e5f627974657308746f5f62797465730663726561746500000000000000000000000000000000000000000000000000000000000000010002020b030808020102020b030c050202020d0208080300070001000001050b003a000101020101000001120a003700100138000a003701140b0138010a00370114060100000000000000160b00360115020201000001040b003700100102030100000b0706000000000000000031280b0011061202390002040002000001020100000007020700", "abi": { @@ -6167,7 +6167,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x9d2a6ab98492524c0d5976309b99aa7918eed8931aeb7714a29fd166188f2086", + "state_key_hash": "0x9d70adda4c0f2620f3a195ad821ff9d1ef27b9b0f72aa36c0bda3cc378646799", "data": { "bytecode": "0xa11ceb0b050000000a0100040204040308280530170747930108da012006fa01440abe02050cc30293020dd6040200000001000007000002000100000302010000040302000005010200000601040000070302000109020200010a02020002030301080001030203080001010401040404000204040c4669786564506f696e743332064572726f7273146372656174655f66726f6d5f726174696f6e616c156372656174655f66726f6d5f7261775f76616c75650a6469766964655f7536340d6765745f7261775f76616c75650769735f7a65726f0c6d756c7469706c795f7536340576616c756510696e76616c69645f617267756d656e740e6c696d69745f6578636565646564000000000000000000000000000000000000000000000000000000000000000103080000000000000000030801000000000000000308030000000000000003080200000000000000030804000000000000000410ffffffffffffffff000000000000000000020108030001000005310a003531402f0c050b013531202f0c040a04320000000000000000000000000000000022031107001106270b050b041a0c030a03320000000000000000000000000000000022031a051d080c0205210b00060000000000000000210c020b02032607041106270a03070525032d07041107270b03341200020101000006030b0012000202010000071f0e0110001406000000000000000022030907021106270b003531202f0c030b030e01100014351a0c020a02070525031c07011107270b0234020301000006040e00100014020401000006060e0010001406000000000000000021020501000007160b00350e0110001435180c030b033120300c020a02070525031307031107270b023402000000", "abi": { @@ -6269,7 +6269,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x6381f16dc6bae2e614dba7bb20b67727a383e30bab1b8bd6680a89f5644543b5", + "state_key_hash": "0xd29e3209a3c2cbc2be1fe988fa6fe3482ddc7e9fb043cdb67eca0a73aaca5ebd", "data": { "bytecode": "0xa11ceb0b050000000a010004020410031446055a2f078901fd010886032006a6030a0ab003170cc703ba020d8106080000000100020e0000000600000308000004070000050001000006020300000704010000080501000009060700000a060400000b080900000c000a00000d040700000e060300000f0b070000100b04000011000c00011400040001060c01080102050301080301050205060800010608010103020608010608030101010800010608030002030708020447554944065369676e6572104372656174654361706162696c6974790947656e657261746f7202494406637265617465096372656174655f69640b6372656174655f696d706c166372656174655f776974685f6361706162696c6974790c6372656174696f6e5f6e756d0f63726561746f725f616464726573730565715f69641567656e5f6372656174655f6361706162696c697479156765745f6e6578745f6372656174696f6e5f6e756d0269640f69645f6372656174696f6e5f6e756d1269645f63726561746f725f61646472657373117075626c6973685f67656e657261746f72046164647207636f756e7465720a616464726573735f6f6600000000000000000000000000000000000000000000000000000000000000010308000000000000000000020112050102010e0803020201130303020209031205000100010204120a00110d0c010a012902200308050d0b0006000000000000000012022d02050f0b00010b01110202010100000c040b010b0012030202000001020d120a002a020c020a021000140c010a01060100000000000000160b020f00150b010b00120312010203010001020c080a00290203050700270b00110202040100000c050b00100110021402050100000c050b00100110031402060100000c050b0010010b0121020701000004120a00110d0c010a012902200308050d0b0006000000000000000012022d02050f0b00010b011200020801000102070f0a00290220030505080600000000000000000c01050d0b002b021000140c010b0102090100000c040b00100114020a0100000c040b00100214020b0100000c040b00100314020c0100000c050b0006000000000000000012022d0202020001000300030100", "abi": { @@ -6484,7 +6484,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x825604f38d0c62c17921995d0d6ab57da6cf371316640b3c12456e9bb081685e", + "state_key_hash": "0xfb4305d07173565d215b45411045c9d468bae4644b8dc362e6ed1c4a7b7816ac", "data": { "bytecode": "0xa11ceb0b050000000901001e021e060324900104b4011005c401bc0107800398040898072006b807a8010ce008b1030000000100020003000400050006000700080009000a000b000c000d000e051f04010601000f000100001002010000110301000d12060701000d13090a01000114050b0001150c010008160d010008170e010008180f010008190101000110110100071a0f0500011b01100004100f01000e10120100081c1301000c10140100041d0c01000b101501000910120100091e16010005200f170106052117010106031018010006100f010002221201000a230f010003050308030704050408040716071707070c0a050a0a020a0a020a0a020a0a020a03000d0c0a020a0a02010a020a0202030a02030303030d060c0a020a0a02010a020a0202030a02030303030d030a020a0203030303030306050c0a020a02010501060a09000103010a0202060a09000301060900020c0a0202060c0a0204060c0a020a020a0204060c05030301060c010c0a060c050a020a020a020a020a020a020a020102060c0303060c030304060c0a020a020303060c0a0a020103060c0503010b0001090002060c020747656e65736973074163636f756e7405426c6f636b07436861696e49640f436f6e73656e737573436f6e666967054576656e740f5265636f6e66696775726174696f6e065369676e6572055374616b650854657374436f696e0954696d657374616d701b5472616e73616374696f6e5075626c697368696e674f7074696f6e08564d436f6e66696706566563746f720756657273696f6e1c6372656174655f696e697469616c697a655f76616c696461746f72730a696e697469616c697a6513696e697469616c697a655f696e7465726e616c066c656e67746806626f72726f77176372656174655f6163636f756e745f696e7465726e616c22726f746174655f61757468656e7469636174696f6e5f6b65795f696e7465726e616c1c72656769737465725f76616c696461746f725f63616e6469646174650e64656c65676174655f7374616b65126a6f696e5f76616c696461746f725f7365740c6f6e5f6e65775f65706f63680a616464726573735f6f661d6372656174655f636f72655f6672616d65776f726b5f6163636f756e7418696e697469616c697a655f76616c696461746f725f736574037365740d6d696e745f696e7465726e616c0b4576656e7448616e646c65106e65775f6576656e745f68616e646c650e64657374726f795f68616e646c6519696e697469616c697a655f626c6f636b5f6d65746164617461147365745f74696d655f6861735f737461727465640000000000000000000000000000000000000000000000000000000000000001052000000000000000000000000000000000000000000000000000000000000000010a0208074163636f756e740a02100f7363726970745f70726f6c6f6775650a02100f6d6f64756c655f70726f6c6f6775650a02121177726974657365745f70726f6c6f6775650a021c1b6d756c74695f6167656e745f7363726970745f70726f6c6f6775650a0209086570696c6f6775650a02121177726974657365745f6570696c6f6775650002000004670e0138000c0d0e0238010c0c0a0d0a0c21030c060000000000000000270e0438010c0f0b0c0a0f210315060000000000000000270e0538010c0b0b0f0a0b21031e060000000000000000270e0638020c0e0b0b0b0e210327060000000000000000270600000000000000000c0a0a0a0a0d23032e05650e010a0a38030c100a10141105010c110e020a0a3804140c120e110b1211060e040a0a3804140c130e050a0a3804140c090e030a0a3804140c080e110b080b130b0911070e060a0a3805140c070e000b10140b0706a08601000000000011080e1111090b0a060100000000000000160c0a0529110a0201000000010f0e000b010b020b030b040b050b060b070b080b090b0a0b0b0b0c1102020200000010460a000700070107020703070407050706070709110b0a00110c110501010a000a011106110d0c0d0e0d0b0111060a00110e0a000b07110f0a000b0b0b0c11100a000b040b050b0911110a000b0811120a000b020b0311130a000640420f000000000011140a000a00110c06ffffffffffffffff11150a00380638070a00380638070a000b0611180a0011190a000b0a111a0b00111b0200", "abi": { @@ -6515,7 +6515,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xe2ae97cbf2c1281ac9db9c74afd12dda59793a59b62fe45d10671cb38611bc06", + "state_key_hash": "0xcc749b6e613adae275ce5563018662db7d46282a684163d1c18034d29e7a3b28", "data": { "bytecode": "0xa11ceb0b050000000601000203020a050c03070f170826200c4608000000010000000002000000010a02044861736808736861325f32353608736861335f3235360000000000000000000000000000000000000000000000000000000000000001000102000101020000", "abi": { @@ -6553,7 +6553,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xa226c41a340ac469a4e04ca7182a655ef05d3a0a68a7eec49a33115925ad5ec8", + "state_key_hash": "0x874bd085690b9c8b2155693ce0136b6dd4eeff4dbf9c8bdd559796fc3f4abdbc", "data": { "bytecode": "0xa11ceb0b050000000c010006020606030c2c05381d07557408c9012006e9011e0a8702080b8f02020c91028d010d9e03020ea0030200000001000200000801000000030000010400040102010400050003010400060405010401090606000203070000010a060600010b060600010503060c09000500010102060c05010900010301060c040105090005054f66666572064572726f7273065369676e65720a616464726573735f6f6606637265617465096578697374735f61740672656465656d076f66666572656403666f720d6e6f745f7075626c697368656411616c72656164795f7075626c697368656410696e76616c69645f617267756d656e740000000000000000000000000000000000000000000000000000000000000001030801000000000000000308000000000000000003080200000000000000000202070900080500050001000100020b0a003b00030607021104270b003d00370014020101000002100a0011053b0020030a0b000107001106270b000b010b0239003f00020201000002030b003b0002030100010008230a013b0003080b000107021104270a013e003a000c030c040b0011050c050a050b032103150518080c02051c0b050b01210c020b02032107011107270b04020001000500", "abi": { @@ -6662,7 +6662,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x575c96840ac15e64ebd62878d4af35b88806031ae2f323ed1a6237b48674e1fd", + "state_key_hash": "0xaa5a52c77639060ae6c370c4d82e5dd6c3f2b80961b91ded65e4f0e8a591fdc7", "data": { "bytecode": "0xa11ceb0b050000000d010006020606030c9b0104a7011a05c1019c0107dd028c0208e90420068905140a9d05070ba405020ca605e9030d8f09020e910902000000010002000007010000000300010100000402030100000504010100000604050100000706070100000806080100000909080102000a02080100000b0a070100000c0b080103000d00050100000e00050100000f0706010000100806010000110a08010000120a06010001140c0c0002030d01010002040e030100021510050100020611050100021612070100021714080100021815070100021907120100021a081201000b0811081208130814080a08150816081708180819080c080d0801060b000109000106090001070b000109000107090002060b000109000609000101010b0001090000010900020b00010900090002070b00010900090002060b000109000900010302060a09000302070a09000302060900060a090001060a090002060a0900060900010a09000209000a090001070a090002070a09000900020900060a0900020900070a0900030b000109000b00010900070a0900064f7074696f6e064572726f727306566563746f7206626f72726f770a626f72726f775f6d757413626f72726f775f776974685f64656661756c7408636f6e7461696e730c64657374726f795f6e6f6e650c64657374726f795f736f6d651464657374726f795f776974685f64656661756c7407657874726163740466696c6c106765745f776974685f64656661756c740769735f6e6f6e650769735f736f6d65046e6f6e6504736f6d6504737761700c737761705f6f725f66696c6c0376656310696e76616c69645f617267756d656e740869735f656d7074790d64657374726f795f656d70747908706f705f6261636b09707573685f6261636b05656d7074790973696e676c65746f6e00000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000000201130a0900000800010000070d0a00380003080b000107011110270b00370006000000000000000038010201010000070e0a002e380003090b000107011110270b003600060000000000000000380202020100000f140b0037000c030a0338030307050c0b03010b010c0205120b01010b0306000000000000000038010c020b02020301000007050b0037000b0138040204010000120c0e003805030607001110270b003a000c010b013806020501000013100e003800030607011110270b003a000c020d0238070c010b0238060b01020601000013100b003a000c030d032e38030308050b0b010c02050e0d0338070c020b020207010000070d0a002e380003090b000107011110270b0036003807020801000014100b0036000c020a022e3803030c0b020107001110270b020b013808020901000016130b0037000c030a0338030307050c0b03010b010c0205110b030600000000000000003801140c020b02020a01000007040b0037003803020b01000007050b003700380320020c010000070338093900020d01000007040b00380a3900020e01000017140a002e380003090b000107011110270b0036000c030a0338070c020b030b0138080b02020f01000018160b0036000c040a042e38030308050b380b0c02050f0a043807380c0c020b020c030b040b0138080b03020000000800", "abi": { @@ -6946,7 +6946,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x0f9c518f531ac3d732301355e37e9dc9d48fa443047f4c18cf3fc65d8fc33bfe", + "state_key_hash": "0x911bacf624d04995d53d1381d9e536cd4fa6ad93c3374d244267d34660fd7ead", "data": { "bytecode": "0xa11ceb0b050000000c01001002101203226b048d01040591012807b901d604088f062006af065e0a8d07170ca407bc030de00a060fe60a0a00050006000700080009000a000b000c000d0800000e0800000f0600021b04010601001000010000110101000012000100001300010000140001000015010200001601030000170101000018010100061d000100011e020200011f02020002200601010604210007000722010100012302020003240702000225000801060526010100072701030007280102000c05110501060c0001030101020107080001080202070b0301090009000105010b030109000401010708000305426c6f636b0f436f6e73656e737573436f6e6669671b5472616e73616374696f6e5075626c697368696e674f7074696f6e08564d436f6e6669670756657273696f6e0f5265636f6e66696775726174696f6e064572726f7273054576656e740447554944065369676e6572055374616b650f53797374656d4164647265737365730954696d657374616d700d436f6e66696775726174696f6e1644697361626c655265636f6e66696775726174696f6e0d4e657745706f63684576656e741764697361626c655f7265636f6e66696775726174696f6e22656d69745f67656e657369735f7265636f6e66696775726174696f6e5f6576656e7416656e61626c655f7265636f6e66696775726174696f6e11666f7263655f7265636f6e6669677572650a696e697469616c697a65196c6173745f7265636f6e66696775726174696f6e5f74696d65177265636f6e66696775726174696f6e5f656e61626c65640b7265636f6e6669677572650c7265636f6e6669677572655f0565706f6368066576656e74730b4576656e7448616e646c650b64756d6d795f6669656c64146173736572745f636f72655f7265736f757263650d696e76616c69645f73746174650d6e6f745f7075626c69736865640a656d69745f6576656e740a616464726573735f6f660e6173736572745f67656e6573697311616c72656164795f7075626c6973686564156765745f6e6578745f6372656174696f6e5f6e756d106e65775f6576656e745f68616e646c650c6f6e5f6e65775f65706f63680a69735f67656e65736973106e6f775f6d6963726f7365636f6e6473000000000000000000000000000000000000000000000000000000000000000103080100000000000000030800000000000000000308030000000000000003080400000000000000030802000000000000000308ffffffffffffffff0520000000000000000000000000000000000000000000000000000000000a550c18000203190315031a0b030108020102011c01020201190300000000010e0a001109110603090b00010701110a270b000912012d01020100000100042c0706290003060701110b2707062a000c010a0110001406000000000000000021031005170a01100114060000000000000000210c000519090c000b0003200b01010701110a270601000000000000000a010f00150a010f020b011000141202380002020000010101100a001109110620030a0b00010701110a270b00110d2c0113010102030200010001040b00110911070204010000011f110e0a0011090706290020030c0b00010701110f270a00110d11100604000000000000002103170b00010703110a270a000600000000000000000600000000000000000b00380112002d00020501000100010507062b001001140206000000010407062901200207030001000103111211080208000001000945111303030506080c00050a1114060000000000000000210c000b00030d0510080c0105131106200c010b01031605170207062a000c0211140c030a030a0210011421032305260b0201020a030a021001142403310b02010702110a270b030a020f01150a02100014060100000000000000160a020f00150a020f020b0210001412023800020000000100020000000100020003000400", "abi": { @@ -7054,7 +7054,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x1c7e2c034ee74231f152214ed7888b888736f3f52518b75d7af69570d338bb7a", + "state_key_hash": "0x44a1477b36739af33b2b579ed55a148861af61b1fcee5beaa763a7dbe04cfba0", "data": { "bytecode": "0xa11ceb0b050000000601000203020a050c0c0718310849200c6908000000010001000002020100010a020101030a020a020a02095369676e617475726517656432353531395f76616c69646174655f7075626b65790e656432353531395f7665726966790000000000000000000000000000000000000000000000000000000000000001000102000101020000", "abi": { @@ -7094,7 +7094,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xdf3fee0bf8e5d44605b4b6d43bdf7616bf18a223c0a953d58f49d03330a9a3f8", + "state_key_hash": "0x0c5668c479cf36977046f30c0c1dcfe857abe4d94f2f2d2b2d979e3cc577d60e", "data": { "bytecode": "0xa11ceb0b050000000601000203020a050c090715210836200c561000000001000100000200020001060c010501060500065369676e65720a616464726573735f6f660e626f72726f775f6164647265737300000000000000000000000000000000000000000000000000000000000000010001000003040b00110114020101020000", "abi": { @@ -7132,7 +7132,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x708a4495d604e5104a7491529cefcd59d146666ae3e54b1cb642afc2a7886f6f", + "state_key_hash": "0xfd6519b9e50503135729efc81955552b72659c2e3d0df344057bd5736198662a", "data": { "bytecode": "0xa11ceb0b050000000c01001002101e032ed6010484022c05b002ea02079a058d0708a70c2006c70c90010ad70d4a0ca10e840c0da51a1e0fc31a0400020003000400050006000700080009000a0400000b0c00000c0f00000d0700000e0800020407010000051f0400000f00010100001002010000110301000012040500001306070000140805000015090a0000160b0100001709070000180c010000190c0100001a010100001b0d0100001c0e0100001d0f0100001e09010000200f1000002111120007341407010007351513010007361601010005201810000637011900013819190003390c0900053a1a1900073b14190100073c1c1d0100053d011000053e1e0100073f2021010002401322010002410122010002422407010004430c010007440128010002452c13010007461c130100014719190002482407010012131313141314121a121b121e121f19201921191a0a1e0a230a140a2419250a000a1b0a231200122719251202070a0900070a09000004060c05030301070a080002060a080005010b0501030206080105010102060a080305010501080303060c030301060c04060c0a020a020a0202060c0a0202060c0501080602070a08000501080001090001060a090001070a090002070a090009000a070801050806030505080603080007080102060c03010301060806040708000303080602070a0900030107090002070806080603060800030302060a09000301060900010b05010900070b0501030b050103010b050103010b0501030101060b0501090002030302080203070203030a08030a08030a0803060c010a0900040b0501030b05010301060804090b0501030b050103010b0501030105010608010708040505030b050103080307080401070b050109000a050503030303030307080307080406030a08000a08000a08000a0800060c02050708020505030800010708010403030307080104050806080007080104070a080005030b0501030747656e657369730f5265636f6e66696775726174696f6e055374616b65064572726f7273064f7074696f6e065369676e65720f53797374656d4164647265737365730854657374436f696e0954696d657374616d7006566563746f720a44656c65676174696f6e095374616b65506f6f6c0f56616c696461746f72436f6e6669670d56616c696461746f72496e666f0c56616c696461746f7253657406617070656e640e64656c65676174655f7374616b6511646973747269627574655f7265776172640f66696e645f64656c65676174696f6e1966696e645f64656c65676174696f6e5f66726f6d5f706f6f6c0e66696e645f76616c696461746f721767656e65726174655f76616c696461746f725f696e666f18696e697469616c697a655f76616c696461746f725f7365741469735f63757272656e745f76616c696461746f72126a6f696e5f76616c696461746f725f736574136c656176655f76616c696461746f725f7365740c6f6e5f6e65775f65706f63681c72656769737465725f76616c696461746f725f63616e64696461746514726f746174655f636f6e73656e7375735f6b657906756e6c6f636b117570646174655f7374616b655f706f6f6c04436f696e0877697468647261771177697468647261775f696e7465726e616c05636f696e730466726f6d116c6f636b65645f756e74696c5f736563730d63757272656e745f7374616b650661637469766508696e6163746976650e70656e64696e675f6163746976651070656e64696e675f696e61637469766510636f6e73656e7375735f7075626b65790f6e6574776f726b5f616464726573731066756c6c6e6f64655f6164647265737304616464720c766f74696e675f706f77657206636f6e66696710636f6e73656e7375735f736368656d650d6d696e696d756d5f7374616b650d6d6178696d756d5f7374616b65116163746976655f76616c696461746f72730869735f656d70747908706f705f6261636b09707573685f6261636b0b6e6f775f7365636f6e647310696e76616c69645f617267756d656e740a616464726573735f6f660576616c7565066c656e6774680a626f72726f775f6d7574047a65726f056d6572676506626f72726f7704736f6d65046e6f6e650769735f736f6d65146173736572745f636f72655f7265736f7572636505656d70747907657874726163740b737761705f72656d6f76650d6e6f745f7075626c69736865640769735f6e6f6e6500000000000000000000000000000000000000000000000000000000000000010308070000000000000003080a000000000000000308010000000000000003080900000000000000030802000000000000000308080000000000000003080600000000000000030805000000000000000308040000000000000003080300000000000000030880510100000000000520000000000000000000000000000000000000000000000000000000000a550c18000203220806230524030102052503260a0800270a0800280a0800290a08000202032a0a022b0a022c0a020302032d052e032f0802040206300231033203330a0803290a0803280a08030000000001100a012e3800200306050b0a000a013801380205000b01010b00010201020002010417490a000b0211150c0a11160c0b0b0b070a160a032303110b000107041117270b0011180c090a012a010c0d0a0d0a090c050c040b042e0b0511042003260b0d0107011117270b0a0c060b030c070b090c080b060b080b0712000c0c0b0111080335053a0b0d0f000b0c380305480a0d1001140e0c10021119160a0d0f01150b0d0f030b0c380302020000001b1d0600000000000000000c020a002e38040c030a020a0323030b051a0a000a0238050c01111c0c040b010f020b04111d0b02060100000000000000160c0205060b000102030000001f230600000000000000000c030a0038040c040a030a0423030a051f0a000a0338060c020b021004140a01210315051a0b00010b033807020b03060100000000000000160c0305050b00013808020400000023340a0010030a0111030c020e0238090309050c080c0405140a0010000a0111030c030e0338090c040b040317051a080c0605220a0010050a0111030c050e0538090c060b060325052a0b0001080c0805320b0010060b0111030c070e0738090c080b08020500000025210600000000000000000c020a00380a0c030a020a0323030a051d0a000a02380b1007140a0121031305180b00010b023807020b02060100000000000000160c0205050b0001380802060000020102260e0a002b02140c010a002b011001140c020b000b020b011203020701000027180a0011220b000c090b010c040b020c05380c0c06380c0c07380c0c080b0931000b040b050b060b080b0712042d04020801000104291b070b2b040c040a0410080a0011050c010e013809030c05110b0401080c0305190b0410090b0011050c020e0238090c030b0302090200030102042a570b0011180c060a062b010c08070b2a040c090a081001140a09100a142603180b09010b080107071117270b081001140a09100b142503250b090107061117270a0910080a0611050c010e013809032e0531080c0305390a0910090a0611050c020e0238090c030b03033c053f080c0505470a09100c0a0611050c040e0438090c050b050c070b072003510b090107001117270b090f0c0b061106380d020a020001042b2b0b0011180c01070b2a040c050a0510080b0111050c030e03380903130b050107051117270d03380e0c020a050f080b02380f0c040a051008380a0600000000000000002403260b050107031117270b050f090b04380d020b0300030102042d5c070b2a040c090600000000000000000c020a091008380a0c050a020a0523030e051c0a0910080a02380b1007140c000b00110f0b02060100000000000000160c0205090600000000000000000c030a091009380a0c060a030a0623032705350a0910090a03380b1007140c010b01110f0b03060100000000000000160c0305220a090f080a090f0c3810380c0a090f09150600000000000000000c040a091008380a0c070a040a0723034905590a090f080a0438110c080a0810071411060b08150b04060100000000000000160c0405440b0901020c0200002e190a000c0938120c0538120c0638120c0738120c080b090600000000000000000b050b080b060b0712012d010b000b010b020b0312022d02020d020001022f110b0011180c020a022902030907081126270b022a020c030b010b030f0d15020e020002010430290b0011180c0211160c030a012a010c060a060f030b0211110c040b0111080c050b0520031405190b060f060b04380305280e04100e140b032303240b060107091117270b060f050b043803020f0000010131330b002a010c040a040f0311020a040f0511020a040f030a040f0038130a040f060a040f0538130600000000000000000c010600000000000000000c020a04100338040c030a020a03230320052e0b010a0410030a02380610021119160c010b02060100000000000000160c02051b0b010b040f011502100200010132120b0011180c020b012a010c050b050f060b0211110c040b04130001010c030b03021100000033190a000b010c030c020b022e0b0311030c050e053814030d05120b000107021117270d05380e0c040b000b043815020103010000000101000101040102030004030404040104020405020000020000000100", "abi": { @@ -7391,7 +7391,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xc4aebacf8a405ac49ac6021ebfdaf607b74d008ee4ad3d46c01c2419179d1535", + "state_key_hash": "0x0df9ca1274d45e552db393ebc40cf921896041913cce8e3698e6ceaf7e4b244c", "data": { "bytecode": "0xa11ceb0b050000000701000603061e05240a072e8f0108bd012006dd01580cb5024000000001000200030001000004020100000500010000060203000207000200010804040001060c000105010101030f53797374656d416464726573736573064572726f7273065369676e6572146173736572745f636f72655f7265736f757263651c6173736572745f636f72655f7265736f757263655f61646472657373096173736572745f766d1869735f636f72655f7265736f757263655f616464726573730a616464726573735f6f661072657175697265735f6164647265737300000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000052000000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000a550c180001000001040b0011041101020101000001070b00110303060700110527020201000001090b00110407022103080701110527020301000001040b000703210200", "abi": { @@ -7445,7 +7445,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x6fd26ff28836349d70c072893be8cd17d3f5fbd0c1588c0639733f61fd1ed8f1", + "state_key_hash": "0x3dd31664ce8cac7a72689d2e11837a283458a798ea5604a616225e02da645b04", "data": { "bytecode": "0xa11ceb0b050000000d01000402040e03128801049a011405ae017d07ab02f70108a2042006c2041e0ae0040d0bed04040cf1049b020d8c07040e9007040000000100020e010000000004020001000100030001020000000402010300000000050304020000000603050300000000070607030000000008060802000000090008020002000a0309020000000b030903000000000c0a01020000000d0b0103000000000e0a0103000000000f0b0902000000100b0c0200000011010a0200040012010d000013060e0200000014060f0300000001170c0c0001100310041007110011051108100a100b10111003070b01020900090106090009010003070b0102090009010609000b0001090102060b0102090009010609000106090101060b0001090102070b01020900090106090001070b00010901010709010101010b01020900090101060b01020900090101030104010901010b0001090103090009010b000109010209000901055461626c65064572726f727303426f7803616464076164645f626f7806626f72726f770a626f72726f775f626f780e626f72726f775f626f785f6d75740a626f72726f775f6d757417626f72726f775f6d75745f776974685f64656661756c7408636f6e7461696e730c636f6e7461696e735f626f780d64657374726f795f656d7074791164657374726f795f656d7074795f626f781264726f705f756e636865636b65645f626f7805656d707479066c656e677468036e6577106e65775f7461626c655f68616e646c650672656d6f76650a72656d6f76655f626f780376616c0668616e646c650d696e76616c69645f7374617465000000000000000000000000000000000000000000000000000000000000000103086400000000000000030866000000000000000308650000000000000000020115090001020216041003000e011100010000010e0a000b010b02390038000a00370014060100000000000000160b0036001502010002000201000001050b000b01380137010203000200040002000501000001050b000b0138023601020601000006130a000a010c040c030b032e0b04380320030b050f0a000a010b0238040b000b013805020701000001040b000b013806020800020009010000010e0e0037001406000000000000000021030907011112270e0038070b003808020a0002000b0002000c01000001060b0037001406000000000000000021020d01000001040b00370014020e0100000104110f0600000000000000003901020f000200100100000e0f0a000b0138093a000c020a00370014060100000000000000170b003600150b020211000200010100000011010e00", "abi": { @@ -7696,7 +7696,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xa1e8b314992e07fcc8027b38c1c807c818d0c18f359f7a3e9c272c05623351ae", + "state_key_hash": "0x811e3eab39f5e04cf36123ac9ae25baa2987f904e6f736215d162f56eb7c2cb2", "data": { "bytecode": "0xa11ceb0b050000000c01000e020e340342bf010481021a059b02c10107dc03a7050883092006a309540af709430cba0ad0050d8a100e0f98100200010002000300040005000600070008080000090c00000a0400000b0800000c0400000d0800000e0c00000f06000010060000110800030407010000022c0401060100120001000013020300001404030000150503000016060300001707030000180803000019000900001a000a00001b0b0300001c0c0300001d0d0300001e0d0300001f060300002003010000210d030000220e010000230b04000024030400012e010100042f060000033011090100033111120100063214150100053306030006341701010006311812010001350101000636190301000337031c01000338151c01000639031d0100013a010100023b06200106023c23030106013d01010015011601171319131a131c131d011e011f13211f2121221f22210105010302060c08020001080202080206080101060c020c05020508020101010b0a010302060c0302070802080203060c0503010608020106080103070a0804030b0a010301060b0a0109000106090001080402070a09000301090005070a080403070a08040608040301060a090002060a09000302070a09000900030307030305060a0804060804030b0a010303010b0a010900010a09000206080605010808010b0b01090001080703080207080907080902070b0b010900090003050307030e5472616e73616374696f6e4665650854657374436f696e064572726f7273054576656e74064f7074696f6e065369676e65720f53797374656d41646472657373657306566563746f720742616c616e63650e4275726e4361706162696c69747904436f696e08436f696e496e666f1744656c6567617465644d696e744361706162696c6974790b44656c65676174696f6e730e4d696e744361706162696c6974790d52656365697665644576656e740953656e744576656e740e5472616e736665724576656e74730a62616c616e63655f6f66046275726e086275726e5f676173146275726e5f776974685f6361706162696c69747915636c61696d5f6d696e745f6361706162696c6974791864656c65676174655f6d696e745f6361706162696c697479076465706f736974096578697374735f61740f66696e645f64656c65676174696f6e0a696e697469616c697a65056d65726765046d696e740d6d696e745f696e7465726e616c0872656769737465720e7363616c696e675f666163746f72087472616e736665720576616c7565087769746864726177047a65726f04636f696e0b64756d6d795f6669656c6402746f05696e6e657206616d6f756e740466726f6d0b73656e745f6576656e74730b4576656e7448616e646c650f72656365697665645f6576656e74730d6e6f745f7075626c69736865640a616464726573735f6f660769735f736f6d6506626f72726f770b737761705f72656d6f7665146173736572745f636f72655f7265736f75726365066c656e67746810696e76616c69645f617267756d656e7409707573685f6261636b046e6f6e6504736f6d6505656d70747911616c72656164795f7075626c6973686564106e65775f6576656e745f68616e646c650a656d69745f6576656e740e6c696d69745f6578636565646564000000000000000000000000000000000000000000000000000000000000000103080300000000000000030801000000000000000308020000000000000003080400000000000000030800000000000000000520000000000000000000000000000000000000000000000000000000000a550c180002012508020102012601020201220303020120030402012705050201280a0804060201260107020229032a05080202290327050902022b0b0b0108082d0b0b0108070001000100030c0a002900030607021113270b002b0010001001140201010001010f080b0011142b010c020b010b0211030202030001010f0707052b010c010b000b011103020300000003040b00130201020402000105101d0a00111411080c030e033800030b0b00010703270e033801140c0207052a050f020c010b010b0238021304010b000912062d06020502000105162d0e00111807052a050f020c040600000000000000000c060a060a042e380323030f05280a040a060c030c020b022e0b0338040c050b051003140a012203230b04010700111b270b06060100000000000000160c0605080b040b01120438050206010001001a110a0011000c020b002a000f000f010c030b0113020c040b020b04160b0315020701000003030b0029000208000001051b2807052b0510020c010600000000000000000c030a0138030c0538060c040a030a0523031005260a010a0338040c020b021003140a0021031b05210b01010b0338070c0405260b03060100000000000000160c03050b0b04020901000003150a0011180a000912062d060a000912012d010a000b0112032d030a00380812052d050b00110d020a010000010c0b0113020c020a001001140b02160b000f0115020b020002000603050b000b010b02110c020c01000200061e0b0b0011140c040b042b06010b010b0212021106020d01000004170a001114290020030a0b000107011120270a00060000000000000000120212002d000a000a0038090b00380a12092d09020e01000103030507052b03100414020f0200020009221c0a000a0211110c030a010b0311060a0011142a090c050b050f050a020a011208380b0b012a090c040b040f060b020b0011141207380c021001000003040b00100114021101000100241a0b0011140c020a0211000c030a030a0126030d07041123270b022a000f000f010c040b030a01170b04150b011202021201000003030600000000000000001202020000020005000400030009000901000000", "abi": { @@ -8044,7 +8044,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xe8aa027cc8ba73bb82e029247e4071a79a437bd4ee493d2c5f7fee90caf9565e", + "state_key_hash": "0x196cc0cdcfab6d5109ca91ca3b92601c565a6237fe894ab33f6ab572e079ac34", "data": { "bytecode": "0xa11ceb0b050000000b010006020604030a3c054615075b890208e402200684036c0af003050cf503bc010db105020fb305020001000200030004080000050000000006000000000700010000080001000009000200000a000200000b030000000c040000010e020200020f03000002100300000111020200000101010301060c03060c050301080002070800030747656e657369730954696d657374616d70064572726f72730f53797374656d4164647265737365731743757272656e7454696d654d6963726f7365636f6e64730e6173736572745f67656e65736973106173736572745f6f7065726174696e670a69735f67656e657369730c69735f6f7065726174696e67106e6f775f6d6963726f7365636f6e64730b6e6f775f7365636f6e6473147365745f74696d655f6861735f73746172746564127570646174655f676c6f62616c5f74696d650c6d6963726f7365636f6e64730d696e76616c69645f7374617465146173736572745f636f72655f7265736f75726365096173736572745f766d10696e76616c69645f617267756d656e740000000000000000000000000000000000000000000000000000000000000001030800000000000000000308010000000000000003080200000000000000030840420f00000000000520000000000000000000000000000000000000000000000000000000000a550c18052000000000000000000000000000000000000000000000000000000000000000000002010d030001000000061102030507001108270201010000000611030305070111082702020100000004070429002002030100000003070429000204010001000006110107042b001000140205010001000004110407031a0206030000050811000a0011090b0006000000000000000012002d00020701000100062711010b00110a07042a000c030a031000140c040b01070521030f05190b040a022103180b03010702110b2705220b040a022303220b03010702110b270b020b030f0015020000000000", "abi": { @@ -8147,7 +8147,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xd47f5c819e9f189b2abfc16705c61c7c52183d9acafad7bcee5495dc4038e9aa", + "state_key_hash": "0x0798a65921f0750cc3e13323e29cf540e5ca2ecf59c21db4fe203dba6c70f24c", "data": { "bytecode": "0xa11ceb0b050000000b01000e020e40034ee80104b6023a05f002ed0307dd06e10708be0e2006de0efe010adc1095010cf111a70c0d981e200000000100020003000400050006000704000008040000090800000a0600000b040000000400000c0700000d0700000e0800000f0600011107000404070100000606040200010001033b040106010010000100001202010000130304000014050100001506010000160704000017080400001809040000190a0100001a0b0100001b000100001c0c0100001d0c0100001e0d0100001f0e010000200f0100002110010000221101000023110100002412010000251301000026141500002716010000281718000029171800053d111a00023e1b1b00063f1d1e02000002401b1b0006411d20020000064221220200000443231e01000442242501000644012802000402451b1b0006462a0102000001472c2b0004482d2e01000449012e0100044123300100034a35010106034b11380106024c1b1b001b1c1b1f1d1f1e1c1f1b201b2127211c211f21291b272327251b261b1e27271b231c231f23291b3228341e3223322132293429391b291d29283902060c08050005060c080a080a080a0b0b010302060c0301080705060c0a020a020a020308060c0a020a020a020103030a0208060c080a080a080a01030b0b0103080a0305080a080a03050a020a0204060c0a020a020a0207060c0a020a020a0201030a020205080504060c060c0608070306060c060c050a020a020302060c06080704060c050a020a0201060c02070805080504060c0506080703010608050106080704060c060807050303060c060807030108050506080005070802070307080601050103020807080602060b0c0209000901060900010102080708000106090102070b0c02090009010609000107090101060b0b01090001070b0b0109000107090005070b0c02080a080106080a050801070b0c02080a080102080a0801010b0c0209000901020807080403070b0c0209000901060900090101080a010a02010900010b0b010900070b0b0103050708010708020b0b0103080608070106090004070b0c020807080506080705070b0c020807080502080708050107080801080302070b0d01090009000207080507080808070b0c0208070805060807030807060807070b0c020807080505070b0c0208070805010b0d0109000108090606080407080207030708020703070806020507080805070b0c0208070805060807050703070b0c020807080505546f6b656e054153434949064572726f7273054576656e74064f7074696f6e065369676e6572055461626c650e4275726e4361706162696c6974790a436f6c6c656374696f6e0b436f6c6c656374696f6e730c4465706f7369744576656e740e4d696e744361706162696c69747909546f6b656e4461746107546f6b656e49640a546f6b656e53746f72650d57697468647261774576656e74046275726e06537472696e67116372656174655f636f6c6c656374696f6e1b6372656174655f636f6c6c656374696f6e5f616e645f746f6b656e206372656174655f6c696d697465645f636f6c6c656374696f6e5f7363726970741b6372656174655f6c696d697465645f746f6b656e5f7363726970740c6372656174655f746f6b656e0f6372656174655f746f6b656e5f6964136372656174655f746f6b656e5f69645f726177226372656174655f756e6c696d697465645f636f6c6c656374696f6e5f7363726970741d6372656174655f756e6c696d697465645f746f6b656e5f7363726970740d6465706f7369745f746f6b656e0e6469726563745f6465706f7369741c6469726563745f6465706f7369745f776974686f75745f6576656e740f6469726563745f7472616e73666572166469726563745f7472616e736665725f73637269707410696e697469616c697a655f746f6b656e17696e697469616c697a655f746f6b656e5f666f725f696417696e697469616c697a655f746f6b656e5f73637269707416696e697469616c697a655f746f6b656e5f73746f7265056d65726765046d696e7408746f6b656e5f6964087472616e736665720e77697468647261775f746f6b656e1677697468647261775f776974686f75745f6576656e740b6465736372697074696f6e046e616d650375726905636f756e74076d6178696d756d0b636f6c6c656374696f6e730a746f6b656e5f64617461116275726e5f6361706162696c6974696573116d696e745f6361706162696c697469657302696406616d6f756e740576616c75650a636f6c6c656374696f6e06737570706c790763726561746f7206746f6b656e730e6465706f7369745f6576656e74730b4576656e7448616e646c650f77697468647261775f6576656e74730a616464726573735f6f660d6e6f745f7075626c697368656408636f6e7461696e731372657175697265735f6361706162696c69747906626f72726f770a626f72726f775f6d75740769735f736f6d65036e657711616c72656164795f7075626c69736865640361646406737472696e6704736f6d65046e6f6e650a656d69745f6576656e74106e65775f6576656e745f68616e646c6510696e76616c69645f617267756d656e7400000000000000000000000000000000000000000000000000000000000000010308000000000000000003080100000000000000030802000000000000000308040000000000000003080300000000000000030805000000000000000308060000000000000003080700000000000000030808000000000000000308090000000000000003080a0000000000000003080b0000000000000003080c0000000000000003080d0000000000000003080e000000000000000a020d0c48656c6c6f2c20576f726c640a021918436f6c6c656374696f6e3a2048656c6c6f2c20576f726c640a02121168747470733a2f2f6170746f732e6465760a021413546f6b656e3a2048656c6c6f2c20546f6b656e0a020d0c48656c6c6f2c20546f6b656e0002012608070102052a080a2b080a2c080a2d032e0b0b01030202042f0b0c02080a0801300b0c0208070806310b0c0208070800320b0c02080708040302023308073403040201260807050202330807350306020636080a2a080a2b080a2e0b0b0103370b0b01032c080a070203380536080a2b080a080203390b0c02080708053a0b0d0108033c0b0d0108090902023308073403000100010219470b0011190c030a03290203090702111a270b032a020c040a0410000e011001380003170b0401070d111a270a0410020e011001380103220b0401070a111c270a0410020e0110013802010b040f000e01100138030c060a0610033804033305400b060f0338050c050a05140e01100414170b051505420b06010b011305010102010100010226320a0011190c070a07290220030805100b00380638073808380912022d0205120b00010b072a020f050c090a090e010c060c050b052e0b06380a2003250b090107031122270b020e01140b030600000000000000000b0412010c080b090e010b08380b020200000202082b1b070f11240c020a000e02140710112407111124060100000000000000380c11010b000e02140712112407131124080b01380d071111241105020302000102010b0b000b0111240b0211240b0311240b04380c11010204020002020801100b000b0111240b0211240b0311240b040b050b06380c0b071124110501020501000202082f96010a0011190c090a092902030b0b00010702111a270a092a020c0b0a090b010b0211060c0e0a0b10050e0e1006380a03200b0b010b000107041122270a0b10000e0e380020032d0b0b010b0001070c1122270a0b0f050e0e1006380e0c0a0a0a100714060100000000000000160a0a0f07150a0a10083804034005500a0a1008380f140b0a10071426034f0b0b010b000107052705520b0a010b04035505590a05380c0c08055b380d0c080b080c0c0e0e1006140b030e0e1009140b060b0c0b0712060c0d0a0b0f000e0e0b0d38100a0b0f020e0e0e0e14120038110b0b0f0a0e0e0e0e14120438120a05060000000000000000240381010592010b092908200386010588010a0011120a000e0e110f0a000b0011190e0e0b0511140594010b00010b0e020601000001050b000b010b021207020701000001070b000b0111240b0211241207020802000102010a0b000b0111240b0211240b031124380d110102090200020208010f0b000b0111240b0211240b0311240b040b05380d0b061124110501020a0100010831250a0011190c040a042908200308050a0a0011120a042a080f0b0c050b050e0110010c030c020b022e0b03381320031a051f0b000e011001110f05210b00010b040b01110b020b0100010833110a002a080c020b020f0c0e011001140e01100414120338140b000b01110c020c01000108361e0a0029080306070e111a270b002a080c030a03100b0e011001381303140b03010701111a270b030f0b0e01100138150c020b020b011113020d0100010818090b000b020b0311170c040b010b04110a020e02000108040b0b020b030b0411070c060b000b010e060b05110d020f01000108372e0b0011190c080a082908030b0b0101070e111a270b082a080f0b0c090a090a010c030c020b022e0b0338132003200b09010b010107001122270b090c070a010c060b01140c050b070b060b050600000000000000001205381602100200010804090b010b020b0311070c040b000e04110f021102000001030b001112021201000001090a0038170a0038180b00381912082d080213010000011a0a0010010e01100121030b0b00010708112a270a001004140e01100414160b000f04150b0113050101021401000202083a720a02100d142902030c0b02010b00010702111a270b0011192a020c070a07100a0a02381a031c0b02010b0701070b111c270b07100a0a02381b010a02100d142902032b0b02010702111a270a02100d142a020c050a0510000a023800033c0b02010b0501070d111a270b050f000a0238030c090a0910033804034605690a090f0338050c080a08140a03160a08150a09100e3804035505640b090f0e38050c060b08140b06142503630b020107092705680b09010b0801056b0b09010b010b02140b031205110b021501000001030b00100102160100010818090b000b010b0311170c040b020b04110b0217010001083b120a0011190c030b032a080c040b040f0f0a01140a021209381c0b000b010b0211180218010001083c2f0b0011190c050a052908030b0b0101070e111a270b052a080f0b0c070a070a010c040c030b032e0b043813031f0b07010b01010701111a270b070a0138150f040c060a06140a02170b06150b01140b02120502020105000202060405010200070101030104070202030800080107000603080200", "abi": { @@ -8676,7 +8676,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x6dc54b259b9bb92b3b16b65951338f1a968cd840df016cc3bd13423fb357c6b9", + "state_key_hash": "0x97edd9afe177e7c76218a23ada412303be27ec336ed415b85ef6576815464ac7", "data": { "bytecode": "0xa11ceb0b050000000b01000c020c1e032a920104bc011c05d801a20207fa03e20208dc062006fc06680ae4070f0cf307c1030db40b02000000010002000300040005000008000506070004040402000100010505040001170700020207010000000700010000080201000009000100000a020100000b030400000c050100000d060100000e070100031005090004110b0c02000004120b0e02000004130f1002000004141101020000051512010005161304000118151400021916170100051a180100021b01170100050b190400041c0111020004041d1b1c020000041e1d01020000051f1e1f0005202021000521220100090a0a0d0b0d0a0a0c0d10101210140a150a140d160a150d090d160d03060c0506080100050c05050a020a0202060c0301080101060c04060c0506080103060c05050a020a020305070b0202050b020208010803070b0202080108030b020208010803050803010502050b02020801080302070b02020900090106090001070901020801080301090101060b0202090009010103010b02020900090102060c080303050a020a02010804010a02010900010b0501090005060c0804080408040b05010308060c08040804080401030b05010308040a070b0202050b0202080108030605070b020208010803060801070b020208010803070803070b0202050b020208010803050803080102060b020209000901060900010103070b020209000901060900090103060c0608010301080301060803010608010207080308030e546f6b656e5472616e7366657273054153434949064f7074696f6e065369676e6572055461626c6505546f6b656e07546f6b656e49640c63616e63656c5f6f666665721363616e63656c5f6f666665725f73637269707405636c61696d0c636c61696d5f7363726970740c6372656174655f746f6b656e1a696e697469616c697a655f746f6b656e5f7472616e7366657273056f666665720c6f666665725f7363726970740e70656e64696e675f636c61696d730a616464726573735f6f660a626f72726f775f6d75740672656d6f7665066c656e6774680d64657374726f795f656d7074790d6465706f7369745f746f6b656e136372656174655f746f6b656e5f69645f72617706537472696e6706737472696e6704736f6d65116372656174655f636f6c6c656374696f6e046e6f6e65036e657708636f6e7461696e73036164640e77697468647261775f746f6b656e08746f6b656e5f6964056d6572676500000000000000000000000000000000000000000000000000000000000000010a020d0c48656c6c6f2c20576f726c640a021918436f6c6c656374696f6e3a2048656c6c6f2c20576f726c640a02121168747470733a2f2f6170746f732e6465760a021413546f6b656e3a2048656c6c6f2c20546f6b656e0a020d0c48656c6c6f2c20546f6b656e0002010f0b0202050b020208010803000100010008230a0011080c060b062a000f000c030a030e0138000c040a040b0238010c070b042e3802060000000000000000210316051d0b030e0138030c050b053804051f0b03010b000b07110d020102000100040a0b020b030b04110e0c050e000b010e05110002020100010008230a0011080c060b012a000f000c030a030e0638000c040a040b0238010c070b042e3802060000000000000000210316051d0b030e0638030c050b053804051f0b03010b000b07110d020302000100040a0b020b030b04110e0c050e000b010e0511020204000000141b0700110f0c020a000e02140701110f0702110f060100000000000000380511110b000e02140703110f0704110f090b0138060702110f1113020500000001050b00380712002d000206010001001a410a0011080c0b0a0b2900200308050a0a0011050b0b2a000f000c0a0a0a0e010c050c040b042e0b053808200319051d0a0a0e013809380a0b0a0e0138000c080b000b020b0311170c0c0e0c1118140c0d0a080e0d0c070c060b062e0b07380b0334053c0b080e0d380c0c090b090b0c111905400b080e0d0b0c380d020702000100040b0b020b030b04110e0c060e000b010e060b05110602000000", "abi": { @@ -8781,7 +8781,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x48b12d7c6cecb34c8eb16fbcd16aa94e0af6d25d801ff614cfe256255f4a86e4", + "state_key_hash": "0x20ecbb8c86eb9eedbcb469f8379761e2cdb777b7af6a85b13dbad6aaf12bee5d", "data": { "bytecode": "0xa11ceb0b050000000801000402040403080a051204071637084d200c6d0b0f780200010002010304000004000100010500010001080000074163636f756e740e5472616e73616374696f6e4665650854657374436f696e04436f696e086275726e5f666565086275726e5f67617300000000000000000000000000000000000000000000000000000000000000010003000001030b00110102000000", "abi": { @@ -8808,7 +8808,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x420ef68d76eb27ca3b115aa143bcbb21fed31303e38840c11e7a0a88046e4dfa", + "state_key_hash": "0xfe15931e94f20d4d54b8ab041e17ae70daa9b4fa3f78c67767006a23b11357f3", "data": { "bytecode": "0xa11ceb0b050000000b01000c020c04031034044406054a35077fa10208a0032006c0032c0aec03090cf50390010d850504000000010002000300040005000008000006000100000701020000080302000009040100040c010100030d050100010e060600050f0a02010005100c02010002110101000709070b080b03060c0a0a020100010101060a02020c0101060c0103010608000201060800010201060a0900010a0202060a0900060900010708001b5472616e73616374696f6e5075626c697368696e674f7074696f6e064572726f72730f5265636f6e66696775726174696f6e0f53797374656d4164647265737365730954696d657374616d7006566563746f720a696e697469616c697a651169735f6d6f64756c655f616c6c6f7765641169735f7363726970745f616c6c6f7765641d7365745f6d6f64756c655f7075626c697368696e675f616c6c6f776564117363726970745f616c6c6f775f6c697374196d6f64756c655f7075626c697368696e675f616c6c6f7765640e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c69736865640869735f656d70747908636f6e7461696e730b7265636f6e6669677572650000000000000000000000000000000000000000000000000000000000000001030801000000000000000520000000000000000000000000000000000000000000000000000000000a550c180002020a0a0a020b0100010000011211040a0011050701290020030c0b000107001106270b000b010b0212002d00020101000100070707012b000c000b00100014020201000100081e0a003800030405080b0001080207012b000c020a0210013801031005170b00010b0201080c01051c0b0210010b0038020c010b010203020001000d0b0e00110507012a000c020b010b020f00151109020001000000", "abi": { @@ -8884,7 +8884,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x18cc12a7c4f97627fbfa0ef6cc5cc6a0e45a3950e5cf30b2c01926c731fdb227", + "state_key_hash": "0x58e6de2a4152511fe9e86ce12c65d095278053f32872f3e69e74cc3e248943de", "data": { "bytecode": "0xa11ceb0b050000000a01000a020a0c03162d0543220765bf0408a4052006c405360afa052b0ca50694020db9081a000000010002000300040005070000060700000008000007000100000802010004180101000319040100011a050500041b010100011c050500011d050500021e01010004060c0a020a0203000c0c030303030303030303030301080001060c01030107080008564d436f6e666967064572726f72730f5265636f6e66696775726174696f6e0f53797374656d4164647265737365730954696d657374616d700c476173436f6e7374616e74730b4761735363686564756c650a696e697469616c697a65117365745f6761735f636f6e7374616e74731b676c6f62616c5f6d656d6f72795f7065725f627974655f636f737421676c6f62616c5f6d656d6f72795f7065725f627974655f77726974655f636f7374196d696e5f7472616e73616374696f6e5f6761735f756e697473186c617267655f7472616e73616374696f6e5f6375746f666616696e7472696e7369635f6761735f7065725f627974651b6d6178696d756d5f6e756d6265725f6f665f6761735f756e697473166d696e5f70726963655f7065725f6761735f756e6974166d61785f70726963655f7065725f6761735f756e69741d6d61785f7472616e73616374696f6e5f73697a655f696e5f6279746573176761735f756e69745f7363616c696e675f666163746f721464656661756c745f6163636f756e745f73697a6514696e737472756374696f6e5f7363686564756c650f6e61746976655f7363686564756c650d6761735f636f6e7374616e74730c6761735f7363686564756c650e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c6973686564106173736572745f6f7065726174696e6710696e76616c69645f617267756d656e740d6e6f745f7075626c69736865640b7265636f6e666967757265000000000000000000000000000000000000000000000000000000000000000103080000000000000000030801000000000000000520000000000000000000000000000000000000000000000000000000000a550c1800020b09030a030b030c030d030e030f031003110312031303010203140a02150a0216080002020117080100010000032111020a0011030702290220030c0b000107001104270604000000000000000609000000000000000658020000000000000658020000000000000608000000000000000600093d00000000000b0306102700000000000006001000000000000006e80300000000000006200300000000000012000c040b000b010b020b04120112022d02020102000102064a11050e0011030a070a0825030a07011106270a030a062503110701110627070229020317070011072707022a020f000f010c0c0b010a0c0f02150b020a0c0f03150b030a0c0f04150b040a0c0f05150b050a0c0f06150b060a0c0f07150b070a0c0f08150b080a0c0f09150b090a0c0f0a150b0a0a0c0f0b150b0b0b0c0f0c15110802020001020000000100020003000400050006000700080009000a00", "abi": { @@ -9027,7 +9027,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x7b913990d5df68402b1438807a139b8fdc76cdf985ab635a6f09166406c6fe97", + "state_key_hash": "0x33e2b3bad19e91f0ad42f5d6f6aa3bec1303fceac2fd9188d8758c5bc2c27d21", "data": { "bytecode": "0xa11ceb0b0500000006010002030223052517073cc30108ff01200c9f023100000001000100000202010000030201000004030100000500010000060301000007040100020c0500030c050a02050c050a020a020a02030c0a02051256616c696461746f725365745363726970740d6164645f76616c696461746f72186372656174655f76616c696461746f725f6163636f756e74216372656174655f76616c696461746f725f6f70657261746f725f6163636f756e741972656769737465725f76616c696461746f725f636f6e6669671072656d6f76655f76616c696461746f72247365745f76616c696461746f725f636f6e6669675f616e645f7265636f6e666967757265167365745f76616c696461746f725f6f70657261746f7200000000000000000000000000000000000000000000000000000000000000010002000001010201020000010102020200000101020302000001010204020000010102050200000101020602000001010200", "abi": { @@ -9122,7 +9122,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0x676c1655de1362f3510ed359bafb9c86d69f436ac28477427f1e92a7594e50c7", + "state_key_hash": "0x758bc607dd636ce92924be393c6ed20588651516f5e02f8d218ccbad404eb5fa", "data": { "bytecode": "0xa11ceb0b050000000801000203026004621205745907cd01930108e002200680030a0c8a038904000000010001010000020203010000030405010000040607010000050801010000060108010000070609010000080a07010000090a0b0100000a0c0d0100000b0e010100000c040d0100000d0c010100000e0d080100000f0f0101000010040d01000c0d070d090d0a0d040d080d010d0e0d050d02070a09000a09000002060a0900030106090002070a0900030107090002060a09000609000101010a090002010301060a0900010301070a090001090002070a0900090003070a090003030203030303070a0900030303030306566563746f7206617070656e6406626f72726f770a626f72726f775f6d757408636f6e7461696e730d64657374726f795f656d70747905656d70747908696e6465785f6f660869735f656d707479066c656e67746808706f705f6261636b09707573685f6261636b0672656d6f766507726576657273650973696e676c65746f6e04737761700b737761705f72656d6f76650000000000000000000000000000000000000000000000000000000000000001030800000000000000000001000001110d0138000e013801200307050c0a000d013802380305020b00010b0138040201010200020102000301000010220600000000000000000c020a0038050c030a020a0323030a051c0a000a0238060a0121031105170b00010b010108020b02060100000000000000160c0205050b00010b0101090204010200050102000601000010240600000000000000000c020a0038050c030a020a0323030a051d0a000a0238060a0121031105180b00010b0101080b02020b02060100000000000000160c0205050b00010b010109060000000000000000020701000001050b003805060000000000000000210208010200090102000a0102000b01000011260a002e38050c040a010a04260309050d0b00010700270b04060100000000000000170c040a010a0423031605230a000c030a010c020b01060100000000000000160c010b030b020a01380705110b003802020c01000012270a002e38050c030a03060000000000000000210309050c0b0001020600000000000000000c020b03060100000000000000170c010a020a0123031705240a000a020a0138070b02060100000000000000160c020b01060100000000000000170c0105120b0001020d010000080738080c010d010b0038030b01020e0102000f0100000b160a002e38012003090b00010700270a002e3805060100000000000000170c020a000b010b0238070b0038020200", "abi": { @@ -9377,7 +9377,7 @@ { "type": "write_module", "address": "0x1", - "state_key_hash": "0xdec45f7e3f30d6fc6197b91d3ddac37ae607eb051cd91c7792c012d88bc7d004", + "state_key_hash": "0x16f29e0e24c5e8b2645b3f1384ed2daebdd7c33840fa2f05cc839c0cf7aa88d9", "data": { "bytecode": "0xa11ceb0b050000000a01000a020a04030e280536120748b70108ff0120069f02360ad502050cda025f0db903020000000100020003000400000f000005000100000602010004080101000309030100010a040400010b040400010c040400020d01010002060c0300020c0301060c010302070800030756657273696f6e064572726f72730f5265636f6e66696775726174696f6e0f53797374656d4164647265737365730954696d657374616d700a696e697469616c697a650b7365745f76657273696f6e056d616a6f720e6173736572745f67656e65736973146173736572745f636f72655f7265736f7572636511616c72656164795f7075626c69736865640d6e6f745f7075626c697368656410696e76616c69645f617267756d656e740b7265636f6e666967757265000000000000000000000000000000000000000000000000000000000000000103080000000000000000030801000000000000000520000000000000000000000000000000000000000000000000000000000a550c18000201070300010000011111020a0011030702290020030c0b000107001104270b000b0112002d00020102000100051d0e001103070229000308070011052707022b001000140c030b030a01230314070111062707022a000c020b010b020f0015110702000000", "abi": { @@ -9431,7 +9431,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -9444,7 +9444,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x57df581bdc8eb537f2e0daefe0c91bcefd4e184d31d5a25fe8728c69cc560486", + "state_key_hash": "0x4a7c80fdf8d876013ce53cb1058ca7c046e8f1dc539c89cbfc9f2b5dac233e58", "data": { "type": "0x1::Account::ChainSpecificAccountInfo", "data": { @@ -9463,7 +9463,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -9487,7 +9487,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x17589738079487b2af997d2ed0bd6d4332205e7c450220e74566c09b1905e617", + "state_key_hash": "0xe4b5a2dae9764d6d6cfd5b676c01dbb6a218442c72c686f07fc5274282686acf", "data": { "type": "0x1::ChainId::ChainId", "data": { @@ -9498,7 +9498,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x2d7368fa67450cf0b7eed0331f147d354815137feb76fff2b7c0fc60ad5bb800", + "state_key_hash": "0xc43de035d74281f24a805c20a82a3d93f2185a4e6846fe18196a2a625d2d26b1", "data": { "type": "0x1::ConsensusConfig::ConsensusConfig", "data": { @@ -9509,7 +9509,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x3481c9601d3bb1d800c5b728e684b1201dfc2829d75259d5ef5ea4b045b15a53", + "state_key_hash": "0x8d53fa2b89941fc2da484da444446d8e7185ba61cb75eebc12e8152ff5bf36cf", "data": { "type": "0x1::GUID::Generator", "data": { @@ -9520,7 +9520,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x764438e1151d8c09aa5f9043996c768cd364e7cb7df8621503f56c554da89f02", + "state_key_hash": "0x1142e7b3a1d48f45ae2ecc9bd087e889f0b53cc7026c4c29e07450e475ad0b04", "data": { "type": "0x1::Reconfiguration::Configuration", "data": { @@ -9544,7 +9544,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x9edd1192ba89cceabd7f130fca7e6cba070420056b0b149f76e567026b0a6cc4", + "state_key_hash": "0x96195959c5bbc51294037ff0f10379b4d06fe63f3e54f67512fede633592ea85", "data": { "type": "0x1::Stake::ValidatorSet", "data": { @@ -9570,7 +9570,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -9583,7 +9583,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x8b49e451a3bb4f865d2a238e81d34b1ac813183a4bdf7bd63aca56b49bf9d81f", + "state_key_hash": "0xa8f1383bdbe01daf7ba208c25887e098d80d93d2083430ef1508a0efbd9e4304", "data": { "type": "0x1::TestCoin::BurnCapability", "data": { @@ -9594,7 +9594,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x79a08e0b94ebb66c0dae37a07c182d46387c347aeb83c07de6109b0503c3a24e", + "state_key_hash": "0x6361dc2da389b51bf777ae884a8481cb828da9db1df3120b25046820a283770f", "data": { "type": "0x1::TestCoin::CoinInfo", "data": { @@ -9605,7 +9605,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x3f1c23fdebea87635e8e87e193c97b9e2748a6f90c09f3c8b22677803a4e5b80", + "state_key_hash": "0x627f093ce5b314d9b2695baf5325baca9d9385f0fb2967738bda3daef48f9def", "data": { "type": "0x1::TestCoin::Delegations", "data": { @@ -9616,7 +9616,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x8e3acba2e68effb510e78950ae72f9b491614c742266e73b19f46210ef729ba7", + "state_key_hash": "0x2f2986d12a91f80a77cd5da67fbb0cee4ccdd3b7d8d9d3e33e24d39a3e9ffc23", "data": { "type": "0x1::TestCoin::MintCapability", "data": { @@ -9627,7 +9627,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xcf66e2ca4e76897cebaa518a193ad55e73868487052899ce87b2d0d4c9496316", + "state_key_hash": "0x3f3419f54896fc75b52bd5882bad94abe95723d5090b37e02bee48f9c9d28337", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -9661,7 +9661,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -9672,7 +9672,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xeee160d734240e9a9250c523c7aefc2fa613bf0e63f5445622efcab6d1fcce1d", + "state_key_hash": "0xf130a53e7173ea06c6587ab85d433816dbc873a55719df178f0e91eb023457c3", "data": { "type": "0x1::TransactionPublishingOption::TransactionPublishingOption", "data": { @@ -9684,7 +9684,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xda497579d98e160f73853a824ab66764eb06ac6f5e7d256e02192948c2cf608f", + "state_key_hash": "0x44acb120d14fb38c5b2ca3173940b0b459c6a9b925d4f5aaf0c8304813bb0376", "data": { "type": "0x1::VMConfig::VMConfig", "data": { @@ -9711,7 +9711,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x40ac0f46a93aa0ea000476aca120a17a18418f173264d4c7d72ff25b11395377", + "state_key_hash": "0x38620e2357b23bfdd3739a4fde0d9db9bdb4311215c4001712e6af8e655580aa", "data": { "type": "0x1::Version::Version", "data": { @@ -9722,7 +9722,7 @@ { "type": "write_resource", "address": "0xf85fd00e30cd388d2609db24d6cc44f2652f27413456938eaa059f65231647cc", - "state_key_hash": "0xd20b0f35cf774f42e920b02768b0fe4de80a67c21f44b1d9c075ebb138546194", + "state_key_hash": "0x77c043f9a9bd64f7291bcdb247a4dc59d1be33004dbc34731e0a6139325ff0b8", "data": { "type": "0x1::Account::Account", "data": { @@ -9735,7 +9735,7 @@ { "type": "write_resource", "address": "0xf85fd00e30cd388d2609db24d6cc44f2652f27413456938eaa059f65231647cc", - "state_key_hash": "0x248eb725fcc98464e56aea55db2ee69f7054230a809efef43f366798eef56078", + "state_key_hash": "0x66a959711cdb54d4b89e29289ecf27b43ec60a43019c267ad9dc217b157d6f92", "data": { "type": "0x1::Stake::StakePool", "data": { @@ -9758,7 +9758,7 @@ { "type": "write_resource", "address": "0xf85fd00e30cd388d2609db24d6cc44f2652f27413456938eaa059f65231647cc", - "state_key_hash": "0xe6e49da9ea0e37ee7dbad1e558ca481643330315bb479b9859b20378ec14a349", + "state_key_hash": "0xb7ef36abe89812a9a0dd1bd475e62b47c17ee3c28e6f40b3858d91cbef5ff0e0", "data": { "type": "0x1::Stake::ValidatorConfig", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_output_user_transaction_with_script_function_payload.json b/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_output_user_transaction_with_script_function_payload.json index df8d573220b2f..0efde17ce9713 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_output_user_transaction_with_script_function_payload.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_output_user_transaction_with_script_function_payload.json @@ -3,17 +3,17 @@ "type": "block_metadata_transaction", "version": "1", "hash": "0xa8fc186c28fc0f95b8233651438093e8e215a51dcd16475f5e68c0a421f6305c", - "state_root_hash": "0xd9e5574895eb9c509bfaece5d792d95b4c28508512e0430f894254c51fe1ce16", + "state_root_hash": "0xb6f61bd169e02392b9fba73c568809fea9393480ba3a5e7b61ea256578ecfe1c", "event_root_hash": "0xd62c85b93234824cf825e9c028c3bcc59b06926039721bd7edd76b56ae9fcecf", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x8e99bc6db50ff6792fd076da5a9f0ac3ea3f72f522a97ba6caaca62a9476ee98", + "accumulator_root_hash": "0x401e464da20d3ffb870185b7b67b7edd32f3cb8d24bbf97e1216713f0cda6edf", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -37,7 +37,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -56,17 +56,17 @@ "type": "user_transaction", "version": "2", "hash": "0x18073cb2536317833aa630d30062383a1f00221dd3604bbce19cd262813e6c36", - "state_root_hash": "0x25af3deecfaca1bc963e775cd0c73c75a306c92fa5456e080aa4bb75ed15a648", + "state_root_hash": "0xf064fbe1070539104300e77099f2de7ffb5979d145197b00f2e1d8b07023efaa", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x3445e79d8be413432882aa0f045632462556456f3de287b02de551ebd85af5fc", + "accumulator_root_hash": "0x9d34ef48b9c3dcbeb941ce427e4c62ca89791bd10b127cc52e2688bc9492ef87", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -79,7 +79,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -92,7 +92,7 @@ { "type": "write_resource", "address": "0xe60912ecb0a8c365d163d258f3b9f1b62f8f9148c207643864d7ed4a2b23159", - "state_key_hash": "0xd1742838da5b852a3ff4714b21e88a0e8f09cc97d2a2d7d78aea7705fa3c51cd", + "state_key_hash": "0xef168b1e7ff11082ccb95c00354bce60695449d7fc4b0c83b481a95133bbc9ce", "data": { "type": "0x1::Account::Account", "data": { @@ -105,7 +105,7 @@ { "type": "write_resource", "address": "0xe60912ecb0a8c365d163d258f3b9f1b62f8f9148c207643864d7ed4a2b23159", - "state_key_hash": "0xf0e43b1c1002eb268eb3c95d032be24bd65f3caef859c88ca1b1eb0180279fc3", + "state_key_hash": "0xb578f1f36209c64335508215430e2f9dea45efaf53b8941995ae8f2324109fe9", "data": { "type": "0x1::GUID::Generator", "data": { @@ -116,7 +116,7 @@ { "type": "write_resource", "address": "0xe60912ecb0a8c365d163d258f3b9f1b62f8f9148c207643864d7ed4a2b23159", - "state_key_hash": "0xdfe49d4e38fbd3f272555234ca2bfff43df59d18ed84d8d91e2abc56c0512ffa", + "state_key_hash": "0x78b4fe92df14f1bbb0363a2fe287f1d97c7f42bb48cbf38ce43f726da5ce9194", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -129,7 +129,7 @@ { "type": "write_resource", "address": "0xe60912ecb0a8c365d163d258f3b9f1b62f8f9148c207643864d7ed4a2b23159", - "state_key_hash": "0x3eb9bd9e5d57ea570fc4dcfc82d8a20873cc45976b3d65dc8ad23daa46b482fe", + "state_key_hash": "0x9598bca9766221a341f76a5fc7e818b2748060569637fcd2f59c6a7ccc01b313", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_returns_last_page_when_start_version_is_not_specified.json b/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_returns_last_page_when_start_version_is_not_specified.json index a7182c1b73f0f..d618479fbd6c4 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_returns_last_page_when_start_version_is_not_specified.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_transactions_returns_last_page_when_start_version_is_not_specified.json @@ -3,17 +3,17 @@ "type": "block_metadata_transaction", "version": "15", "hash": "0xab4b8030c0f02abde2a88a278e7e8306c96e2d63bdb9bdb397127c2d6ff124a3", - "state_root_hash": "0xbfc2cd9a851cc06d0f0a39e1f1768ffae6a5fe7b8d939a87b64ee11d04a5bcd6", + "state_root_hash": "0x127832b0cfabbeb73bdccc1da7ba54fcdb3af3688cf720917b71f1bcda2cdf47", "event_root_hash": "0xfc0f9408425e820476668a895d8f224289bdb47f9ae81ea453cbf73d9d38d9dc", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x89cb711b8d40977c9aafca5ff22641d2e67060723bc0d6952b638151ddd93708", + "accumulator_root_hash": "0x7a92920aaf4e92b30e4dc714acf71026d8e6743d0871316d37159b80c37ef004", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -37,7 +37,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -56,17 +56,17 @@ "type": "user_transaction", "version": "16", "hash": "0x7bc390a5d4f5b88560b0494e0baac9ca723fcbac4e5265a2420dd1114c6dd64e", - "state_root_hash": "0x68b8e90c2b9613eb1e6c8a755f0a9b665914eafc5eef9cafd272f74070c74618", + "state_root_hash": "0xb1a7ae0b93be0b7eeaa79b4e3a78d092518004f115bd315ac60a011c57a5e866", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0xdd426dbf57d232e389fe056d178bdf26cbdb3d322ac3ff50c7d1371c9f9807f0", + "accumulator_root_hash": "0x9aff329a3391e7194ef0f2e0ff0fa2f34e7535d08d90b5b20861bd3ab9a0f046", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -79,7 +79,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -92,7 +92,7 @@ { "type": "write_resource", "address": "0x9e4c52c179a8a4cf9189a8ba861693be8547d921c8b210ec95e9a8c29ce83623", - "state_key_hash": "0x4c6bc7079c3fcd3d95f57b020cbbd5567bace022073a4a7e3c9aa7f929ebe65b", + "state_key_hash": "0x03277dadacf81b58696fc229bc30bdcf291565ddb13f215fcc407f89ab8a5f59", "data": { "type": "0x1::Account::Account", "data": { @@ -105,7 +105,7 @@ { "type": "write_resource", "address": "0x9e4c52c179a8a4cf9189a8ba861693be8547d921c8b210ec95e9a8c29ce83623", - "state_key_hash": "0xe736d87c24205efd01161184c302ddb8c26f5113a6b1d1c8b889b437882feae2", + "state_key_hash": "0xe249f70297e54fd2ada096145375b4bd8d973299e650b7c9058604ebe9f8d6b1", "data": { "type": "0x1::GUID::Generator", "data": { @@ -116,7 +116,7 @@ { "type": "write_resource", "address": "0x9e4c52c179a8a4cf9189a8ba861693be8547d921c8b210ec95e9a8c29ce83623", - "state_key_hash": "0xd4aef363298742ed031fd1d9eac686dc9dd61519ad7381f9cedbc574f5939a61", + "state_key_hash": "0x1ef9280bc28c0d4a5704f2d63e8efcaa2f398b49979833f55f2157cc7bbeb0ee", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -129,7 +129,7 @@ { "type": "write_resource", "address": "0x9e4c52c179a8a4cf9189a8ba861693be8547d921c8b210ec95e9a8c29ce83623", - "state_key_hash": "0x147a9d87dc6f57acbb88460c29468fc6b49705f500cdda5e826adfbef50eaf2b", + "state_key_hash": "0xb75c42fc66ef9734a16d77f8edfcf9e1b785b073e6145b67c0ed64a4f764cdde", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -186,17 +186,17 @@ "type": "block_metadata_transaction", "version": "17", "hash": "0xff76c3e356955265af1d3ba30315df5a21b41ae06dc08012062e12f96b259b2c", - "state_root_hash": "0xefd467f318ff43ad0184b83fe54ea3a1aa5390c0a5a4ac0a69f4b40179737003", + "state_root_hash": "0x319825e630c8faec76320fe1dcd9df047aa4c0b7a21807046af0499f4a7d00a7", "event_root_hash": "0xa6a9b44eb5c9a225afd2d745cccbcf07c5acb9e9bfa7b4c9d88ffa39a4c3f117", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x50046cfa20b2ebc769dc308b7384600119a5d9d90bf2a17aa3ab1bfc8020d990", + "accumulator_root_hash": "0x7aa19fdd703756ae11be7719bc41e84327e69a0af9550372f5e05a1e5a5d8db0", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -220,7 +220,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -239,17 +239,17 @@ "type": "user_transaction", "version": "18", "hash": "0x28fb2e2dda957e42fd64e36b6df5282764ad4cf04f5b4e82e6d60706a31eef35", - "state_root_hash": "0x6e0831f51da0fb6e3920ee4fe6c15d7ce6592a340f5b72b73aee5d3291bf7b88", + "state_root_hash": "0xcb65f6e659359d8889a64122e26003c540d4ab910469d77c501f37e301e47068", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x13d7c4eed7e0ad4b18a0543e435a5091ab7678220cbd3afa71d6912edaaab99a", + "accumulator_root_hash": "0x15b2dec48ae2a84edb7746c8fbb38b972a331b08943a80ebcc51fbeca009d59c", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -262,7 +262,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -275,7 +275,7 @@ { "type": "write_resource", "address": "0x59c02dfad19271ecb71d6ef1095d174cfcd641696135b76cd1cbf28f79e134c", - "state_key_hash": "0xd94b5304b1deb5ce3639e7e2cfa8c0291343ed5324abf507ab8979a4bcbb959e", + "state_key_hash": "0xef15da6221978566eeaf11283cbc78c482aa6484d456dd949a6ff732c15dfb97", "data": { "type": "0x1::Account::Account", "data": { @@ -288,7 +288,7 @@ { "type": "write_resource", "address": "0x59c02dfad19271ecb71d6ef1095d174cfcd641696135b76cd1cbf28f79e134c", - "state_key_hash": "0x187fd05af857e605af2df0b18cd6f2b9726baf9a531bd1d1aa4c11d3b9e96d61", + "state_key_hash": "0x8586e70781d7b3e60987e72de84c448379893a07ea59e7bd001db638c4844161", "data": { "type": "0x1::GUID::Generator", "data": { @@ -299,7 +299,7 @@ { "type": "write_resource", "address": "0x59c02dfad19271ecb71d6ef1095d174cfcd641696135b76cd1cbf28f79e134c", - "state_key_hash": "0xac1ca2bce83e8a5be3af45e0eb22a75bcaf79c272778910f9241bcf778415ff3", + "state_key_hash": "0x73c274799170eb07b4a84d02ab5b0be2cc63b79e77fe1c145038b1cef7a6cf50", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -312,7 +312,7 @@ { "type": "write_resource", "address": "0x59c02dfad19271ecb71d6ef1095d174cfcd641696135b76cd1cbf28f79e134c", - "state_key_hash": "0xb8ea4877d3a15d539974d5473078f32eaa65f9eddff84f526585070fdf22361f", + "state_key_hash": "0x6b53ed7f500c32998c31710f99d3f6e10df2d33e3292f15f17de6ce22ba95d7d", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -369,17 +369,17 @@ "type": "block_metadata_transaction", "version": "19", "hash": "0xc7f0b608aeabd6d96828cb0ef04a2b598ca2bc3ac8e644cf6ef799021494c9b0", - "state_root_hash": "0xef432886aaf78a3322625c633d3fd7c292fc4d27b036372007eb305243094628", + "state_root_hash": "0x0ee36270653e84a6d9260c2d958ef2e07a5e9065f66ac6450f52b1d0ff56d35e", "event_root_hash": "0x496e79b2a294b6c0eb9a2b0e4827a2f0c0c559074ce5dfbf4e4462f08d12dfc8", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x50e6fb59c4fc055da00bd1ee6bfe4d181e91637c53e12ac0647e9d93ed15343b", + "accumulator_root_hash": "0x66b62723d241905d722154c72a51b8fa2b6366cc1792642f355f45eade256b98", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -403,7 +403,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -422,17 +422,17 @@ "type": "user_transaction", "version": "20", "hash": "0x652f97186eb303dc48af00318aec7c9b6efbad3f8538a541d1cab6afe593d0b2", - "state_root_hash": "0x4a971748697d1152e0d74ae43f3a0bf272ef2480ad33d39925da917187896797", + "state_root_hash": "0x61289d47378967ec673eecc1d1653aebd56e6cf099a3a2c935bc891de113ef6d", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x2c93ab6914074c8d17305d4acbfcc6fb080731f95f14ecbc75a1f41c6b57edd9", + "accumulator_root_hash": "0x4c7974b184fe098425574874cbf3b3147a49b2b0e7cd4d15da5a20bbbf70a5df", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -445,7 +445,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -458,7 +458,7 @@ { "type": "write_resource", "address": "0xd1fdd7f5e3329151d0c0f2cf8d2e7041d5c6bedea6f4cafe97677ac6e39d7333", - "state_key_hash": "0x0b880195fb71d40b488a550b52d17de2dd129d5f30f34855ca8b428239909fac", + "state_key_hash": "0x04c668dc130cf3c8a37e09ca1ade21bbd163380fcb839808c217a355eccd5d72", "data": { "type": "0x1::Account::Account", "data": { @@ -471,7 +471,7 @@ { "type": "write_resource", "address": "0xd1fdd7f5e3329151d0c0f2cf8d2e7041d5c6bedea6f4cafe97677ac6e39d7333", - "state_key_hash": "0x06334530a7c0cbb971583c12b2ad6fdb52c8c38cfaeea9a8d522efdbecaf942b", + "state_key_hash": "0x39902e3fe565b48239d14ba5b78dda16c96a24c1f1f5aa88f88e35fb1d3be395", "data": { "type": "0x1::GUID::Generator", "data": { @@ -482,7 +482,7 @@ { "type": "write_resource", "address": "0xd1fdd7f5e3329151d0c0f2cf8d2e7041d5c6bedea6f4cafe97677ac6e39d7333", - "state_key_hash": "0x2131acd287391c8b5b57eba83c3c22d9539623fd33835cbc439dc6daa6c349ec", + "state_key_hash": "0x8aeb4a9b793ae83a5362718c2e5d7a28a3655b90b5859d7e0c8180fbead03775", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -495,7 +495,7 @@ { "type": "write_resource", "address": "0xd1fdd7f5e3329151d0c0f2cf8d2e7041d5c6bedea6f4cafe97677ac6e39d7333", - "state_key_hash": "0x316023da5e04ebecd7ec034437eac83eb78be7b499303274f582548c928d69ea", + "state_key_hash": "0x5af9e2d14137340cb1b2e5edfd7f18b5a3bcaea6553248e0e20e8f91834ae8a6", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -552,17 +552,17 @@ "type": "block_metadata_transaction", "version": "21", "hash": "0x87595e096f8f40bcc5b304449d1a746fe849a097b2894dcf08da17fbe2add83c", - "state_root_hash": "0xa4b47283375df691d692e3699596459419fcf498db9b6d602351c41e44c007fb", + "state_root_hash": "0xa700776b341b3f3cf97a1d4789ee97c19d49f1eabe24626212ab65b68d5c98aa", "event_root_hash": "0x32505461d562923642b8f4144f32e3e73955e76f0f2a969e1c4749246664ee81", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x383d490b75ce5edd6bb3dc4a621251c0c079f0af4222e6e39823d3df6c57c3f5", + "accumulator_root_hash": "0x5cc8ad337686df3cf8a900632bfd9da820cf73310573360257ce6eab1bf99415", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -586,7 +586,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -605,17 +605,17 @@ "type": "user_transaction", "version": "22", "hash": "0xda850e6cde9e2a036603b21f27d1aaaaabed970130deb84f624b844c422b0d86", - "state_root_hash": "0x9654e716d14cf97650cd5785dc9c1fd19e444076abb55696d1bee1b2abba6dba", + "state_root_hash": "0x404bad6d81ae79745497136097b5a79c0a37155cedc0d7416ad7deb3d3e91ee7", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x8489f33fd122377b0d426fdd4dfea2ad28247709380854eca383406916879075", + "accumulator_root_hash": "0xd3a4515c9d5cb6306b755be5cd4b3ac2ba4d724ea5802f70c554d1a5ee08e051", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -628,7 +628,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -641,7 +641,7 @@ { "type": "write_resource", "address": "0x629ec1c7de426633839c3f68e4ea92581232c8cbdd579ba57478b26e5876da5f", - "state_key_hash": "0xa5c1c65631f4efeb904f7b0efea19b978a2c52924378c71777ead38e15fc7b03", + "state_key_hash": "0xe5d859887a18652976a4f75a6c081d3ee8e255a9fec18a764fc981bee0f803d5", "data": { "type": "0x1::Account::Account", "data": { @@ -654,7 +654,7 @@ { "type": "write_resource", "address": "0x629ec1c7de426633839c3f68e4ea92581232c8cbdd579ba57478b26e5876da5f", - "state_key_hash": "0x764a717688baeecf53d40ed0ba3279cea14d0f8951a1d9c1507a319a80b1ac62", + "state_key_hash": "0x377b74094e45c24c64ec4028de89b4dc41109774f8c7472c943a03ef41040f4d", "data": { "type": "0x1::GUID::Generator", "data": { @@ -665,7 +665,7 @@ { "type": "write_resource", "address": "0x629ec1c7de426633839c3f68e4ea92581232c8cbdd579ba57478b26e5876da5f", - "state_key_hash": "0x2e288c3d05b00045585128368b18d7619a65b275312aee7e4ad767f26bb6a6f1", + "state_key_hash": "0x6fba67a882581ae850c96d68be0dc094d90bedf68dc1d4f2e6082e2289e9a342", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -678,7 +678,7 @@ { "type": "write_resource", "address": "0x629ec1c7de426633839c3f68e4ea92581232c8cbdd579ba57478b26e5876da5f", - "state_key_hash": "0x2a5e591719799823be3bb152f3033dd6c38a1a044641b24b569623c98bafabb6", + "state_key_hash": "0xb31d87c758afe7e060e264de86e22f715a7eb83a8a5a0e96a0967084b1cb00cf", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -735,17 +735,17 @@ "type": "block_metadata_transaction", "version": "23", "hash": "0x9bed1b067e0c22ac849b46bbf5c73cbd59ecd769cf8d9c10632f4226b9b5cc23", - "state_root_hash": "0xc05ce6a311142f3ec8743fe3d28701b55c3f1ebc21eb7d12134385b6e59a2b67", + "state_root_hash": "0x556d724adcba709a77401c136f6161c3cc8b7503c3a39013f15a921da3f7c17d", "event_root_hash": "0xb473990da4cec260bef238d5fa0ae94273985146231517965ee00a0d8e543489", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0xdf6336230506d221f41904ac71c503e147edf3a8425e3309a748bdef2d38d9f3", + "accumulator_root_hash": "0x5d0f1b42dbc6cc5e783b601b4735b7aee07f7074fde3bc58bc8cdb62646d445b", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -769,7 +769,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -788,17 +788,17 @@ "type": "user_transaction", "version": "24", "hash": "0x68cdfdeabb160917d852e8960a2588a3a8a1905707561a2a5e4b3922f2c20109", - "state_root_hash": "0xbe59a84202690e6844b0598d5e179a81307d96e9ef0936eee74cd5b9c246bf60", + "state_root_hash": "0x5e0c7f5ab62a3a3521de4a447fdb4508619c8b143450bf2c81e27876d80ede35", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0xb0ba13fb733f8e88ffb38843fb008be1f89720e0728605075f546147b91598b6", + "accumulator_root_hash": "0x5925fbd893e9da324c4ba1c231afbbecb892a68787680746f3e89a831891ca33", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -811,7 +811,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -824,7 +824,7 @@ { "type": "write_resource", "address": "0x71f9cc8709deb65a1d8019f02735da21bfd43be9f8c75bbdca45560958bc65a9", - "state_key_hash": "0xd5d96a542a0cf17d7352e49e09163007b8747453f0b64147a5b58426ddec9e61", + "state_key_hash": "0x647077f76db432a12111274be211a6cfcd18bf4739a26b46d62015d3ed33f8f4", "data": { "type": "0x1::Account::Account", "data": { @@ -837,7 +837,7 @@ { "type": "write_resource", "address": "0x71f9cc8709deb65a1d8019f02735da21bfd43be9f8c75bbdca45560958bc65a9", - "state_key_hash": "0x68848c0224e2be75854b8a5f75c7ec0cb2941d61b22a9e8e4a946717a435be60", + "state_key_hash": "0x15a738f992d943415a4f27c3acb6572a4fac944f8fc635eaf98143f469ab4519", "data": { "type": "0x1::GUID::Generator", "data": { @@ -848,7 +848,7 @@ { "type": "write_resource", "address": "0x71f9cc8709deb65a1d8019f02735da21bfd43be9f8c75bbdca45560958bc65a9", - "state_key_hash": "0x61edbd7b8d9472fba6aca1bbe56a8596b46f5424d3228573ab952a7e40b477dc", + "state_key_hash": "0xf15eaf9821b16fffb26acb9ea309e2a97ef4a0effeefcbf20b724948a60021c7", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -861,7 +861,7 @@ { "type": "write_resource", "address": "0x71f9cc8709deb65a1d8019f02735da21bfd43be9f8c75bbdca45560958bc65a9", - "state_key_hash": "0xaf80147f6422bad3603f1d4a77e37db1740bef9215166da55e2ef208495b5ad0", + "state_key_hash": "0xb14e15f98e269d79bc5bb295f193e51855090bb68f1d3902ab0e5d161572e3cf", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -918,17 +918,17 @@ "type": "block_metadata_transaction", "version": "25", "hash": "0x0b7764d54ad6dd6490a482a7997a598a5257024017993eafcd936a95c0efdb80", - "state_root_hash": "0xba6544e24b0e59f4e62f7e2a810c93dc722243a6de8d4921fe7a177966b3037f", + "state_root_hash": "0x0682d24af980e8bed2cb92e51920f37d15f1978c5e07872f1fd37c293e8a9001", "event_root_hash": "0x8e252e4998b08918e04f49d8c009144fc995a000a923667efc111157916c565c", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x3e37166a7a729eba042739eddfdf36cd854b75eb2220abe9bb43252442f734be", + "accumulator_root_hash": "0x5fa2bdeac9f417d85a66e3451fd3d25b6451ff85126ff67db6d458565c42bd6d", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -952,7 +952,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -971,17 +971,17 @@ "type": "user_transaction", "version": "26", "hash": "0x673d5dca47ffde8b99952fec38ee130fd2aa735c084402b3a8850165d467a917", - "state_root_hash": "0xe2e403bfef7a900075ef7af706bf9b5e932f1952f6d3693cf43f57118961f68b", + "state_root_hash": "0x241f1380c3c630e2eb0d3253ced176772c94045a28d8c362aa67c621119972fe", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0xdd0cf17e6833537102b0fb5f2f43305cb1be52bcec10b50717cb121ab20c99da", + "accumulator_root_hash": "0xc33fd40548fffac5c8fa07c571fbc041ff921caf6760bc22c76bfce3950287b0", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -994,7 +994,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1007,7 +1007,7 @@ { "type": "write_resource", "address": "0x811a29fed994d121a6d1a8d422a73ddfaa9cef6cf313477409c6ca6462bdbec", - "state_key_hash": "0xd9ab3694152a58d553d0d5637b47e9b23d0d958a680176a7a2ecdd85331f4af4", + "state_key_hash": "0xd09a6493bbb7007a1433069703518b2e403398890acd3d3e22c1183a18a64299", "data": { "type": "0x1::Account::Account", "data": { @@ -1020,7 +1020,7 @@ { "type": "write_resource", "address": "0x811a29fed994d121a6d1a8d422a73ddfaa9cef6cf313477409c6ca6462bdbec", - "state_key_hash": "0x7bf634e0094c63625d5bdacc800052aafa345f0d5d184b056210d7d8336f618f", + "state_key_hash": "0x959f183bd157b660c5acd66d216c997fa0e68800cd924714350ae16c8595d4d7", "data": { "type": "0x1::GUID::Generator", "data": { @@ -1031,7 +1031,7 @@ { "type": "write_resource", "address": "0x811a29fed994d121a6d1a8d422a73ddfaa9cef6cf313477409c6ca6462bdbec", - "state_key_hash": "0x5d623fecd4de200f72972d59f569cdd18016978934984af1929243431d926922", + "state_key_hash": "0xdfdda47e4c0371ae66929f866bafe77a0ca3fad05ff0eb824f7006a91a74bd8d", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1044,7 +1044,7 @@ { "type": "write_resource", "address": "0x811a29fed994d121a6d1a8d422a73ddfaa9cef6cf313477409c6ca6462bdbec", - "state_key_hash": "0x70aad05c2708467f63fb8be86d74bdc0541e234ae14dc47752fac7aaab09765f", + "state_key_hash": "0x21be41af9eb6bebe4ab8971cf0ba7d73a4b032b3b99c6bc6643a803c0f394bbc", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -1101,17 +1101,17 @@ "type": "block_metadata_transaction", "version": "27", "hash": "0xacb5e69631257947d0bdb5453e02de7f760e27c7432f53e41950a959f73f3cc1", - "state_root_hash": "0x08d5e44d78176d70fe12e94812150815102b736637ed4c5e642e57c21771f4b3", + "state_root_hash": "0x2ef82ee9c1630eb05177a7b7eb23480a2008fb1e41d6c7f39f76e7a4331329ca", "event_root_hash": "0x0705a795230d060400e635f254aea3c6325d1abebc2f9a5e4554356ccf67ecee", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x782896f6fc35e6cbfcf84266de93859ce13b7713865fbdaa699214ffa9567a7f", + "accumulator_root_hash": "0xf06d8089d2ddd6d7da33b60f5f4acd74aff18c5c608ec4c7bce6810e86eaec43", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -1135,7 +1135,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -1154,17 +1154,17 @@ "type": "user_transaction", "version": "28", "hash": "0x50b56bc5a09a095afcf38451aef0ffeeca9e8c17f538d082ccf33b4ead3d9de9", - "state_root_hash": "0x967e75511c65e20b0c9fa225455ad4d7c9a999fb8ac3b70bd47624b8f28fa11e", + "state_root_hash": "0xd90b6a7f4c17e78805ac01bd6339971f8f8384b97dbba35787fa32263eb1848e", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x0bb1ab96bce4d2ae25d7a0551e15fa09533fb3f09c0714731113957dc4ebea98", + "accumulator_root_hash": "0x506ae2fd5876823f58383aeeae2a9cff6b8ed24c65813e9efe74887cd0330645", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -1177,7 +1177,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1190,7 +1190,7 @@ { "type": "write_resource", "address": "0x2466e5bfe75e3531bf24c8aa25074f165b997e19c80a36a9eccea767b263f2a4", - "state_key_hash": "0x61414a3b1ca6a2d6e51e76714fbac40c31c015c8249de83f6dad286a2a04de8a", + "state_key_hash": "0x1e468fea440ddabf5e25cd46f2f8ec2a97456e4afe0a58456eb47d055569662b", "data": { "type": "0x1::Account::Account", "data": { @@ -1203,7 +1203,7 @@ { "type": "write_resource", "address": "0x2466e5bfe75e3531bf24c8aa25074f165b997e19c80a36a9eccea767b263f2a4", - "state_key_hash": "0x88610d45620bbe0f1ab52382c7ceb3b4b73624cda9af8b76a19cd6259ae4cbc8", + "state_key_hash": "0x6b39e43ad6069da6fb5d19dcd671cc8478450c29a7760cbabcf7300132eae28e", "data": { "type": "0x1::GUID::Generator", "data": { @@ -1214,7 +1214,7 @@ { "type": "write_resource", "address": "0x2466e5bfe75e3531bf24c8aa25074f165b997e19c80a36a9eccea767b263f2a4", - "state_key_hash": "0xa7fe3341cb8ca11f4c583022ac3a42f59194744b922c3323fead4f80cb70c2ba", + "state_key_hash": "0x9c7dee0eb0ba9c16d37527a7e60a0cb04833baf497f92571cb44029287a6b996", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1227,7 +1227,7 @@ { "type": "write_resource", "address": "0x2466e5bfe75e3531bf24c8aa25074f165b997e19c80a36a9eccea767b263f2a4", - "state_key_hash": "0x9be88cb4b760d26470fc19921ad50711193f57a11cb04285dfea183d27652e83", + "state_key_hash": "0x2fa461bbee09eb3609376d26061eb0ebde9e261a31cc1a525fbeca638a7497c1", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -1284,17 +1284,17 @@ "type": "block_metadata_transaction", "version": "29", "hash": "0xcd0ef18ec2388d7e92564fb7d68b5c3c1bb21cf5c52ea27b19b40ee78c561c94", - "state_root_hash": "0xe0d68e2c095630df7f777fed723897d53fb940387a1023e820054aa199180d8e", + "state_root_hash": "0xf1c1262de110e83b2cdcfb2f543a93f5800f40651b60794c133dd2c9eee0c5b0", "event_root_hash": "0xe983a92b7c4b5440b045e59d64cff9044536782ab5b6c6089e1cfe05ffb50218", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x322d2092e624187cdc9abf40cbe9b67a9ead4074a530933f359c15a12ae14473", + "accumulator_root_hash": "0x9342612a61112ee9212c897c6231187476025bb27e814460573b14e711ed5888", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -1318,7 +1318,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -1337,17 +1337,17 @@ "type": "user_transaction", "version": "30", "hash": "0x8c9e6c04384957bd474d64147adad5e3405733aab3319e715ef116e7e60c6be4", - "state_root_hash": "0x1628a242d982c5f444f1e8a37b608737f0c332d20101185b11fa4d49aea5d64c", + "state_root_hash": "0xe712461431470b3d55af81db65e5010e1fa0b9c47e22e3008d6be07fd98f7989", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0xc61f058689f71592a68d196d37440d5f85c48723d3202bf023047d243c8b7ef7", + "accumulator_root_hash": "0x143444bee538f8982ca4be70b35508ae8ffbc8354afce3cf25028c29dafeaa69", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -1360,7 +1360,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1373,7 +1373,7 @@ { "type": "write_resource", "address": "0xe6729b2cdb9dd280cefaa1121c496e82e94a75bf429a1e83bc2f5f605780c345", - "state_key_hash": "0x45aea3b168f3577a08e719429c5a7fdcc4551f2a460610ff1a33711cb36da87e", + "state_key_hash": "0x0f6ac40c6d68fd56c98c562eed2ff34b8f6e854e53ae447b1d3d95e3fa938595", "data": { "type": "0x1::Account::Account", "data": { @@ -1386,7 +1386,7 @@ { "type": "write_resource", "address": "0xe6729b2cdb9dd280cefaa1121c496e82e94a75bf429a1e83bc2f5f605780c345", - "state_key_hash": "0xa1a90426d80a7f12bdda5255e87c9862e29c60ecf8b0355b4e8a79fdd507ebd7", + "state_key_hash": "0xc63247478f89c079176b66011a4c309a3bce7ce8e41e26adaace9a879b3df8fb", "data": { "type": "0x1::GUID::Generator", "data": { @@ -1397,7 +1397,7 @@ { "type": "write_resource", "address": "0xe6729b2cdb9dd280cefaa1121c496e82e94a75bf429a1e83bc2f5f605780c345", - "state_key_hash": "0x32423c797d019e8ace8c33d9dcf7f3e83c77692d756f7dba454d14a74dec91b8", + "state_key_hash": "0xb12bf28b6da98becd5329bd9c1e807068156c48efc1f974fe67e510b6d3cb740", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1410,7 +1410,7 @@ { "type": "write_resource", "address": "0xe6729b2cdb9dd280cefaa1121c496e82e94a75bf429a1e83bc2f5f605780c345", - "state_key_hash": "0xb2ae44fa9e703fb9dab2e8bddcb2d90bf9d7fdc4217ce02221c3d0632936b9c0", + "state_key_hash": "0x6535489044494fd8f2dcc0b226da477cb03b79b28a4afbf2f676947207cb0616", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -1467,17 +1467,17 @@ "type": "block_metadata_transaction", "version": "31", "hash": "0xe7c21dbd27d48c1c39e2b0e232e7ae5c92dbed02adc5dd45f8f4afa3759198d4", - "state_root_hash": "0xd3994b58b994dd67f877001f257e2ac9119fcfbc64c17672fdccb6bac6384fa4", + "state_root_hash": "0x0b3e68fb0bccd2dce156727488610d198dd21218e10ea28c4d0f26cc766bc018", "event_root_hash": "0x65d9c64fc0037bcbc4d77763204f191e92635cc864e3da1ab60b9665368c9371", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x45c494e6368e1fb4271e15bfa5bd160c4573c7c68f53bf5e4d3f4c8113173d70", + "accumulator_root_hash": "0x91dcf664af8e9cf3cab4365f4845fd35a7bd142143b05245e76feff4b2e9ae4a", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -1501,7 +1501,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -1520,17 +1520,17 @@ "type": "user_transaction", "version": "32", "hash": "0x0c26a52a417e88ba6bcb3c0b892ca231d8b71aed396c9d0e6ede20877c198682", - "state_root_hash": "0x7b46839dfd6eb30af2aa1a2d3563979b9856eea01a03790ada7d5b51a056c2a8", + "state_root_hash": "0x9913200f2481e1539b1a616501d8c3830e2cdd0ecce68e24d37a015ce74a10dd", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x177b889c2ecf4bfa4353503014e3f9d7011ded16ae2bf97f17dae2fe58b6e2eb", + "accumulator_root_hash": "0x4e0401a1d1eb38c68d13ad8255a0ddf1a65555c5970b3c8916279f8dab261af9", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -1543,7 +1543,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1556,7 +1556,7 @@ { "type": "write_resource", "address": "0xbc8b6a81cd04f4de0119ff7ab7ec5eb28797e5ab659071fc7f4ed8285963fbbc", - "state_key_hash": "0x3819e0e8a8023180f83e13e502ee13d9b6dc4d92ed033b8636da002212a738fe", + "state_key_hash": "0x090dd3bcd9a1036586c3a1aa3cd44923b4c4f590c06f00ab02779474dbae2d93", "data": { "type": "0x1::Account::Account", "data": { @@ -1569,7 +1569,7 @@ { "type": "write_resource", "address": "0xbc8b6a81cd04f4de0119ff7ab7ec5eb28797e5ab659071fc7f4ed8285963fbbc", - "state_key_hash": "0xb4e72aa2f6c0b0f09a05ee41f8d72c11d6a8171a96f21d620d92f32f2b3b9faf", + "state_key_hash": "0xa776d19f7f1fefdabe85c68bf86e1cd943214e4095925530d0ea57eee9164415", "data": { "type": "0x1::GUID::Generator", "data": { @@ -1580,7 +1580,7 @@ { "type": "write_resource", "address": "0xbc8b6a81cd04f4de0119ff7ab7ec5eb28797e5ab659071fc7f4ed8285963fbbc", - "state_key_hash": "0x23bd1e4e6ba3f68605ca6eb959cb560f6ea2736a771d92e522e4bb2af639651c", + "state_key_hash": "0x139226684d36a51c2fd92a377d42d950c67055431a7f9dd55b12f2d3be663c18", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1593,7 +1593,7 @@ { "type": "write_resource", "address": "0xbc8b6a81cd04f4de0119ff7ab7ec5eb28797e5ab659071fc7f4ed8285963fbbc", - "state_key_hash": "0xa990e18349ef4a927f462c4777c3eefb44911116b81e4c0b9e2d5139e05a824c", + "state_key_hash": "0x2bb134f0c6a06f197736b3b2c083840ca2f3eda6fb97922b4df96ff979d0d317", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -1650,17 +1650,17 @@ "type": "block_metadata_transaction", "version": "33", "hash": "0x024ded6930a59f0bab79f57ad6b7d21ca11b47ffbf85736ff221c255669202d4", - "state_root_hash": "0x7e9ae996d5397a06f6bf8163755bafdd159a200c7fc4969b3b9efab77add4ec0", + "state_root_hash": "0x59691fbefd5923d34512c6020e1e159155a6be35bfcde9ba427d813fe958981a", "event_root_hash": "0x20747e0a553e9e055902d419f76f38004ba4d751fbe959c32c1ff6c4a982d578", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x24b807dc25b62669daf7e57be992627b5d30bf87befe52e12f5749aba4c05f2d", + "accumulator_root_hash": "0x7b2f763820e43fe5d1a48cc4f90c4078895f91a45619923afda134e0c47575e7", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -1684,7 +1684,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -1703,17 +1703,17 @@ "type": "user_transaction", "version": "34", "hash": "0xf91aed259eb4db845dc1b611e2ed67ddbf5fed8966ec76dd184659493b0677fb", - "state_root_hash": "0x475ce25c0c7324d76a8b6fd2493f8f0c81363262bcec2f3d6737921d8127e2d3", + "state_root_hash": "0x8db598a68f14186d4a8de3c0da561e3fe3dce0f5b758355a732ff462e95810e3", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x49f74dd4dc37f74125459f03c7082c12d9ca9be4b8ce7ae8c8bfbcf0cd391861", + "accumulator_root_hash": "0xdcec9501c991776dab6223f8e55fe0f4fdb26460b761a55c582a2916cf1126d1", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -1726,7 +1726,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1739,7 +1739,7 @@ { "type": "write_resource", "address": "0x3a005a7fa8e1c2fdab97247be839d548711d07e26b682d3f8b6bb9f6fa804332", - "state_key_hash": "0xc6a9f922ee3f04606940a0747a8949779b2bdcdb87c2a7b289414bfe7fe19d6f", + "state_key_hash": "0xc06256144060f3421bd7d635a3a9da6e55122a9e7d0bdb9e950164c3c2b24b50", "data": { "type": "0x1::Account::Account", "data": { @@ -1752,7 +1752,7 @@ { "type": "write_resource", "address": "0x3a005a7fa8e1c2fdab97247be839d548711d07e26b682d3f8b6bb9f6fa804332", - "state_key_hash": "0x1468bec76352b89911522a46dfaf4e3c3ddb5ed723e1bc6a4735d4f485ba5a6b", + "state_key_hash": "0x8da5927e2d95c24f8f13251e8b017f4599a7dc978a412b7aaec7a87e30264155", "data": { "type": "0x1::GUID::Generator", "data": { @@ -1763,7 +1763,7 @@ { "type": "write_resource", "address": "0x3a005a7fa8e1c2fdab97247be839d548711d07e26b682d3f8b6bb9f6fa804332", - "state_key_hash": "0x1c36af51ff2cdeb39f0e7c7bc745c7cf2ac09bbb37d928be4c656643a5ad0df9", + "state_key_hash": "0xc1cca713c8a5bd4490c999a2ad791fbb617b949cbc0b35b45022131828dce89c", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1776,7 +1776,7 @@ { "type": "write_resource", "address": "0x3a005a7fa8e1c2fdab97247be839d548711d07e26b682d3f8b6bb9f6fa804332", - "state_key_hash": "0x9aa92243c259ba084b042d14fb25f4125da7a080ed1e157d4c0714815923c1e3", + "state_key_hash": "0xd73ef855d274170966614d4669990d2457ab82d177525d00fcf21ceb8c217b9d", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -1833,17 +1833,17 @@ "type": "block_metadata_transaction", "version": "35", "hash": "0xa7507dd24e0c31f630087d85c5ffdb72e4352ab70020ae31044d6be77ea72a13", - "state_root_hash": "0x6ea11b5c3353a91ebfb3badf215970fc7adfa63b77c93155d45686d28f3aa319", + "state_root_hash": "0x79ae120803e359048e4fc8fb9a6820149c47a81258eec19c4b75c83ea8f7ce2c", "event_root_hash": "0x239c9fd4aed1dc852e6bd817282c845600d5f578ab140a267d50ffb5d365bf7a", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0xdaa1fa2bf20543e085df0d451db1f5577d6f58b4e5529b8fb2dc3a6be9e3f338", + "accumulator_root_hash": "0x6d1db9d2b312234b04c5f74f0a6ebf1e794efe624afdb04b2819fe3c2ecfcdd9", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -1867,7 +1867,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -1886,17 +1886,17 @@ "type": "user_transaction", "version": "36", "hash": "0xf102d60f1e2350c3491f00d87fd646d9441bc6341672c2d81c7541627958f181", - "state_root_hash": "0xfb0fbea22b4c187d66b2b8ca2bb77371611ea55feb2923f2ef6dc6f08ffb7ae6", + "state_root_hash": "0xaa74c449c83aa29fb5a1ace180e70feaf298d24760b190fc0d7f35a00e37c4ca", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x7e37cbeac702eb58d851d7f5eaf39a33c9ac23e6acf98c6268d36aeae39f4e77", + "accumulator_root_hash": "0x386aa1bc820e026f60a5701353e5deb90e273f47c0f8100f85dad061bc7a5c3b", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -1909,7 +1909,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1922,7 +1922,7 @@ { "type": "write_resource", "address": "0x73cb8245b462c25d2c0792576c83f26a66456c6c26ed271769be71ec85920331", - "state_key_hash": "0x359c40737b2d00ee37b472fe5a03abdb7283264c1e21fe20601c9629b2b35827", + "state_key_hash": "0xb09df84862b84ec7897b14ba150a41f021ced756b7124269328c6ade6e988f54", "data": { "type": "0x1::Account::Account", "data": { @@ -1935,7 +1935,7 @@ { "type": "write_resource", "address": "0x73cb8245b462c25d2c0792576c83f26a66456c6c26ed271769be71ec85920331", - "state_key_hash": "0xb09a8029dfa274b90b59264458cd74e36ec27c157374bb20bfad812a29b042b5", + "state_key_hash": "0xe4a038ad8979ec1468d82dd0dd5890fe88c1537b68462ab848c2ebf1ff380206", "data": { "type": "0x1::GUID::Generator", "data": { @@ -1946,7 +1946,7 @@ { "type": "write_resource", "address": "0x73cb8245b462c25d2c0792576c83f26a66456c6c26ed271769be71ec85920331", - "state_key_hash": "0x5b9cc988bf95904ebec9e4a6fdde8c970d13d7d81256359c3a9a8611c14d353f", + "state_key_hash": "0xc985a69d5c55536413c79cd5b1e1cdd82254b215acc1195455849513e86d1b21", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -1959,7 +1959,7 @@ { "type": "write_resource", "address": "0x73cb8245b462c25d2c0792576c83f26a66456c6c26ed271769be71ec85920331", - "state_key_hash": "0x594be380e6b9da07e429d9a2e988cedc52bbcf9610456ff113d84f1f8e249142", + "state_key_hash": "0x271837ce3c631d7546615db30f95162b19ed9536429178b53d6f8edc2b7d7fa6", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -2016,17 +2016,17 @@ "type": "block_metadata_transaction", "version": "37", "hash": "0x12a953e6b6bcd5bac5cf670f018ec1a1f4b918a3e8a6c7398fdf3f935dae6b48", - "state_root_hash": "0x9231e7b30d0c668dabf15e3ac0e348e03463f64eb9a7b8dd7a0d31d446279d10", + "state_root_hash": "0x71f33ec67f7b47cbd5a4b918fa2cd1f42cb4fccd3f3b6a8834b73bb8dd6d83d3", "event_root_hash": "0x0fb2cd74861c38ca95112f194e496f084333fb444284b1005e7eb9ed061c0ecb", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x9580e586123d65d3fae2e57db413984f486aab20291f59bd426597073977554c", + "accumulator_root_hash": "0x866392ba40b02928ea62e08fcd3cf12a2e0e56d35eda69bbfd4b370c8ee03b52", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -2050,7 +2050,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { @@ -2069,17 +2069,17 @@ "type": "user_transaction", "version": "38", "hash": "0xd8a0e4a0854841f0a2d0ccba40b0bd4e033781b6458580e521a50286835bfcf6", - "state_root_hash": "0x8a81c42eb0a7aefdd4ed356337f7fb16c0921cc3abf6134d55bffaaf28851510", + "state_root_hash": "0x6d20c4a56d9bb49fb00b161d22735bc6f8ede56bdc3f5e1818607fde17043c4c", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "92", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0xcf34142f5fe759cad253e1ca4e322e455eac9edcb8545c46e890bcd39244bcde", + "accumulator_root_hash": "0x54cc8691a8c8f81d0ac59dd9271461d92e3ab6c70e2e808ea883807c28a93ea6", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -2092,7 +2092,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -2105,7 +2105,7 @@ { "type": "write_resource", "address": "0xb8e26002ab0e7a0849cb7c9618faa67dbd7c2167f944102d2dd80ab33f8491b2", - "state_key_hash": "0x5160d31838ae39a6662560e18ac5ea3e799aae7121ce5834b9cf18c16c8c6567", + "state_key_hash": "0xe257db469a4a71690730c90fe8dee95a56e66d908337fbf5169d26b99044fbbd", "data": { "type": "0x1::Account::Account", "data": { @@ -2118,7 +2118,7 @@ { "type": "write_resource", "address": "0xb8e26002ab0e7a0849cb7c9618faa67dbd7c2167f944102d2dd80ab33f8491b2", - "state_key_hash": "0x9aceb3bcb6619623a666f0ee8a80d220856ee7d528dc31ee7689b3baaced8b22", + "state_key_hash": "0x40a9302e6bfa6f5902d50828904455d36ab2126df83fddf5bf86978e60333a5d", "data": { "type": "0x1::GUID::Generator", "data": { @@ -2129,7 +2129,7 @@ { "type": "write_resource", "address": "0xb8e26002ab0e7a0849cb7c9618faa67dbd7c2167f944102d2dd80ab33f8491b2", - "state_key_hash": "0x0dd97334721ea9f3cc79c1cf2af38ce3caab0eb99867b585c1dcded1ee481404", + "state_key_hash": "0x5b70a4660d2a922d947ed552d48d03785d2b0729b94ec43fbc01f4396d3fa44f", "data": { "type": "0x1::TestCoin::Balance", "data": { @@ -2142,7 +2142,7 @@ { "type": "write_resource", "address": "0xb8e26002ab0e7a0849cb7c9618faa67dbd7c2167f944102d2dd80ab33f8491b2", - "state_key_hash": "0x2b0c63c7fdbed0267adc655340afe638b98c06ae9e0c4696eb0d81435851a22d", + "state_key_hash": "0x51accbdeccfe7cf431ebcfd3f518cd816d39a7c395b261dc489c85fcc608727e", "data": { "type": "0x1::TestCoin::TransferEvents", "data": { @@ -2199,17 +2199,17 @@ "type": "block_metadata_transaction", "version": "39", "hash": "0x2b9f44dbdcf4cb278e5e49d6981385801f6cbcfd0e5b6854537094b04f4f95f5", - "state_root_hash": "0x27735cc217e51fa3d7196218050497995fca32128b729b9c11d57688d38d564f", + "state_root_hash": "0x7f17a6f9ef9c2aed78f9fe6a850c2e481ccd32f7e335e864a793023f9e18e2f2", "event_root_hash": "0xa478d3f1b71522bd300aeff7b6d0838796c8b5d21226303ae99d4ada6981e19e", "gas_used": "0", "success": true, "vm_status": "Executed successfully", - "accumulator_root_hash": "0x55a2ac4f6abd8b76490c2cc9d2428675f10f2f370923d61710c6958b84fd26cc", + "accumulator_root_hash": "0x1461a8680bc05208c1860b30f86790dd1894b95577bd1077de2cb9e69b5e18df", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x220a03e13099533097731c551fe037bbf404dcf765fe4df8743022a298650e6e", + "state_key_hash": "0x7e8bea72fc5af8587e37495c9bcbf1a1ed13674251622b4ed373884bf9749972", "data": { "type": "0x1::Block::BlockMetadata", "data": { @@ -2233,7 +2233,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0xf113db06626eb7724773e4e9dacecc8a6cb3a710b8b70365768168b24fe06ce3", + "state_key_hash": "0x3ca60dda914f0541ea08b55c9d4b0952e032e54065e1876b5d41cdcff924ae6b", "data": { "type": "0x1::Timestamp::CurrentTimeMicroseconds", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_module_payload_bytecode.json b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_module_payload_bytecode.json index 19821de4f0295..97d9ddde04631 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_module_payload_bytecode.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_module_payload_bytecode.json @@ -2,17 +2,17 @@ "type": "user_transaction", "version": "2", "hash": "0xf1d9819d9c3890f1d3e515be30cf920bd5bba8a7616dc02f21438c3ce08e27fa", - "state_root_hash": "0x3cd5c847adbb63eacd7a588a2ac23ff98f5d64a5ec0e82eeca02acece5d3b446", + "state_root_hash": "0xb2e7e297073058181f47bcd0843bf61ccf2c77e0d176b69ca5de823a71c2e49b", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "1", "success": false, "vm_status": "Transaction Executed and Committed with Error MALFORMED", - "accumulator_root_hash": "0x33158c7e0638a88ea8ffa7b20129a10e0bbc821c6dbd35b971548a379b84fcf9", + "accumulator_root_hash": "0x35047450d9f36290e526f62efc52faacbaba493aeebae24169216c34b3349bcc", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -25,7 +25,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_address.json b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_address.json index 3e31fc1a6329a..542fed9079e27 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_address.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_address.json @@ -2,17 +2,17 @@ "type": "user_transaction", "version": "2", "hash": "0x97053ab47cdf9d0bee6a38b61d4ca5366090474be9191c589377dad77b3fab66", - "state_root_hash": "0x3cd5c847adbb63eacd7a588a2ac23ff98f5d64a5ec0e82eeca02acece5d3b446", + "state_root_hash": "0xb2e7e297073058181f47bcd0843bf61ccf2c77e0d176b69ca5de823a71c2e49b", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "1", "success": false, "vm_status": "Transaction Executed and Committed with Error LINKER_ERROR", - "accumulator_root_hash": "0x1b0e003884dd80c962669303d00ce6eed67351de816f9e7ba95117bed1e16d68", + "accumulator_root_hash": "0xc346b01b59e9955808da4f15dda63a4dbdba927d7d118a83a5b61f9b5b70058d", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -25,7 +25,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_arguments.json b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_arguments.json index aa2d2e630c9a8..ad335a2c4e670 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_arguments.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_arguments.json @@ -2,17 +2,17 @@ "type": "user_transaction", "version": "2", "hash": "0x0760cc0dfba7e747fdcfda4ffeffbe4fa42061482758e14803535f5babfb09a0", - "state_root_hash": "0x3cd5c847adbb63eacd7a588a2ac23ff98f5d64a5ec0e82eeca02acece5d3b446", + "state_root_hash": "0xb2e7e297073058181f47bcd0843bf61ccf2c77e0d176b69ca5de823a71c2e49b", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "1", "success": false, "vm_status": "Transaction Executed and Committed with Error FAILED_TO_DESERIALIZE_ARGUMENT", - "accumulator_root_hash": "0x4313c12136d76b3f2e90f748ce6bbe8210b0feb7e9b37d9799d0bbc6410fedd7", + "accumulator_root_hash": "0xfad53c086f0866ea238025f19ec4e96e40d092021874408e2d1da48b159d29b4", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -25,7 +25,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_module_name.json b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_module_name.json index a4b7c94646e59..cf75c27abd951 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_module_name.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_module_name.json @@ -2,17 +2,17 @@ "type": "user_transaction", "version": "2", "hash": "0x454dcd76c7a06eebaf8674a72bb4ecd991b268047a6af9bba9fc15a8baa49af2", - "state_root_hash": "0x3cd5c847adbb63eacd7a588a2ac23ff98f5d64a5ec0e82eeca02acece5d3b446", + "state_root_hash": "0xb2e7e297073058181f47bcd0843bf61ccf2c77e0d176b69ca5de823a71c2e49b", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "1", "success": false, "vm_status": "Transaction Executed and Committed with Error LINKER_ERROR", - "accumulator_root_hash": "0xbd83be11d1e533064d76508f72c5d31bcfdecbf7bb68834ac784a43a09e6ae95", + "accumulator_root_hash": "0xccce7c20a180be0b7ab2d34632c718a5962226f95357dd00a9525acb37321df8", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -25,7 +25,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_name.json b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_name.json index 3474792903b83..1561172e59930 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_name.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_function_name.json @@ -2,17 +2,17 @@ "type": "user_transaction", "version": "2", "hash": "0xc00c694596b002f38c4a5eb5b8b20a772cb2bc7e5aacd3b2637e73bec802796e", - "state_root_hash": "0x3cd5c847adbb63eacd7a588a2ac23ff98f5d64a5ec0e82eeca02acece5d3b446", + "state_root_hash": "0xb2e7e297073058181f47bcd0843bf61ccf2c77e0d176b69ca5de823a71c2e49b", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "1", "success": false, "vm_status": "Transaction Executed and Committed with Error FUNCTION_RESOLUTION_FAILURE", - "accumulator_root_hash": "0xf0bca4611a15359ba2929e8139da9875e742c7d60ed920eeab8bbe6fb0c3f54b", + "accumulator_root_hash": "0x6d83c17b487a75310df9bd65fde4a88bb0f963671f86a7f4da1719d44b3946de", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -25,7 +25,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_payload_bytecode.json b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_payload_bytecode.json index b31e7c18295ed..a929bd918701f 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_payload_bytecode.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_invalid_script_payload_bytecode.json @@ -2,17 +2,17 @@ "type": "user_transaction", "version": "2", "hash": "0xd99666ee3f06d5d564d1e8bf5955a020e7634fd9b539c2b6bab071670548f625", - "state_root_hash": "0x3cd5c847adbb63eacd7a588a2ac23ff98f5d64a5ec0e82eeca02acece5d3b446", + "state_root_hash": "0xb2e7e297073058181f47bcd0843bf61ccf2c77e0d176b69ca5de823a71c2e49b", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "1", "success": false, "vm_status": "Transaction Executed and Committed with Error CODE_DESERIALIZATION_ERROR", - "accumulator_root_hash": "0x410fac4a60cbc5f3f5d40ff0d97df6aea6cfce9923b4171919185455d159bf06", + "accumulator_root_hash": "0xd77fc327ddd323fa6b57cdf2145c5d5d146d689416da2d740528a4e53f0b9f5e", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -25,7 +25,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_missing_script_function_arguments.json b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_missing_script_function_arguments.json index e8d0892d5c2ff..59d479230b875 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_missing_script_function_arguments.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_missing_script_function_arguments.json @@ -2,17 +2,17 @@ "type": "user_transaction", "version": "2", "hash": "0x8df66affad9c571750829820259721f96af4d7ae787bd7089bea259ff0f82cb1", - "state_root_hash": "0x3cd5c847adbb63eacd7a588a2ac23ff98f5d64a5ec0e82eeca02acece5d3b446", + "state_root_hash": "0xb2e7e297073058181f47bcd0843bf61ccf2c77e0d176b69ca5de823a71c2e49b", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "1", "success": false, "vm_status": "Transaction Executed and Committed with Error NUMBER_OF_ARGUMENTS_MISMATCH", - "accumulator_root_hash": "0x40c0e124b8f72b0227cdd5c0091856c9da07d2abe0b1ede6fd67db0efed15228", + "accumulator_root_hash": "0x4ab41f99c44ee5b0a5b30a277aefa24beb529e9db1ac0773327d45ca125a7cb0", "changes": [ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x04a62513032e695c923632ca1b9248d11e49c9b1e83bba39974adf50bbabdd8f", + "state_key_hash": "0xa85a3f04345fb96b11d0e4f8b85a04475452f309d6305d8a4de891bd22392995", "data": { "type": "0x1::Account::Account", "data": { @@ -25,7 +25,7 @@ { "type": "write_resource", "address": "0xa550c18", - "state_key_hash": "0x0429c60e9038d8b98b6cbddf810e3517cf3b029b8655d701962e6b1bfec59e04", + "state_key_hash": "0x6b3ef01fe5ffd2a5a4bc8921a900ff6281fce77cda659e1b89c93a08e7a6507f", "data": { "type": "0x1::TestCoin::Balance", "data": { diff --git a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_script_function_validation.json b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_script_function_validation.json index 90d1e38b8b020..0ee7309c36bee 100644 --- a/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_script_function_validation.json +++ b/api/goldens/aptos_api__tests__transactions_test__test_get_txn_execute_failed_by_script_function_validation.json @@ -2,17 +2,17 @@ "type": "user_transaction", "version": "4", "hash": "0x67d3d83ebf873c54ae08380b8984ee3bef0227c284117384b9e086498c52fb90", - "state_root_hash": "0x003951fb3d69e476d49c575491b32f83dd0618ee518a423883746f36518f6f13", + "state_root_hash": "0x1aa8f44dcb13db56c702a3a8d0deec12950b0fc954c87cb2e62dfa436363ca3c", "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "gas_used": "21", "success": false, "vm_status": "Move abort by LIMIT_EXCEEDED - EINSUFFICIENT_BALANCE\n A limit on an amount, e.g. a currency, is exceeded. Example: withdrawal of money after account limits window\n is exhausted.\n Error codes", - "accumulator_root_hash": "0x6a0a857f6cd893347cc49f932acac8294e083f2702f9e4748eda7033435cbecb", + "accumulator_root_hash": "0x3ca3530d588324b29d3dc35c659afa14824541886493537834b2c2588238178b", "changes": [ { "type": "write_resource", "address": "0xe60912ecb0a8c365d163d258f3b9f1b62f8f9148c207643864d7ed4a2b23159", - "state_key_hash": "0xd1742838da5b852a3ff4714b21e88a0e8f09cc97d2a2d7d78aea7705fa3c51cd", + "state_key_hash": "0xef168b1e7ff11082ccb95c00354bce60695449d7fc4b0c83b481a95133bbc9ce", "data": { "type": "0x1::Account::Account", "data": { @@ -25,7 +25,7 @@ { "type": "write_resource", "address": "0xe60912ecb0a8c365d163d258f3b9f1b62f8f9148c207643864d7ed4a2b23159", - "state_key_hash": "0xdfe49d4e38fbd3f272555234ca2bfff43df59d18ed84d8d91e2abc56c0512ffa", + "state_key_hash": "0x78b4fe92df14f1bbb0363a2fe287f1d97c7f42bb48cbf38ce43f726da5ce9194", "data": { "type": "0x1::TestCoin::Balance", "data": { diff --git a/api/src/accounts.rs b/api/src/accounts.rs index 04b51eb0701cc..e8a43f62325e2 100644 --- a/api/src/accounts.rs +++ b/api/src/accounts.rs @@ -20,11 +20,12 @@ use aptos_types::{ }; use anyhow::Result; +use aptos_types::account_state_blob::AccountStateBlob; use move_core_types::{ identifier::Identifier, language_storage::StructTag, move_resource::MoveStructType, value::MoveValue, }; -use std::convert::TryInto; +use std::convert::{TryFrom, TryInto}; use warp::{filters::BoxedFilter, Filter, Rejection, Reply}; // GET /accounts/
@@ -37,7 +38,7 @@ pub fn get_account(context: Context) -> BoxedFilter<(impl Reply,)> { .boxed() } -// GET /accounts/
+// GET /accounts/
/blob pub fn get_account_state_blob(context: Context) -> BoxedFilter<(impl Reply,)> { warp::path!("accounts" / AddressParam / "blob") .and(warp::get()) @@ -85,7 +86,7 @@ async fn handle_get_account_state_blob( address: AddressParam, context: Context, ) -> Result { - fail_point("endpoint_get_account")?; + fail_point("endpoint_get_account_state_blob")?; Ok(Account::new(None, address, context)?.account_state_blob()?) } @@ -152,11 +153,11 @@ impl Account { } pub fn account_state_blob(self) -> Result { - let blob: Vec = self + let state = self .context - .get_account_state_blob(self.address.into(), self.ledger_version)? - .ok_or_else(|| self.account_not_found())? - .into(); + .get_account_state(self.address.into(), self.ledger_version)? + .ok_or_else(|| self.account_not_found())?; + let blob: Vec = AccountStateBlob::try_from(&state)?.into(); Response::new(self.latest_ledger_info, &blob) } diff --git a/api/src/context.rs b/api/src/context.rs index d2be88f2941c8..93ef984daec15 100644 --- a/api/src/context.rs +++ b/api/src/context.rs @@ -8,7 +8,6 @@ use aptos_mempool::{MempoolClientRequest, MempoolClientSender, SubmissionStatus} use aptos_types::{ account_address::AccountAddress, account_state::AccountState, - account_state_blob::AccountStateBlob, chain_id::ChainId, contract_event::ContractEvent, event::EventKey, @@ -18,13 +17,10 @@ use aptos_types::{ use storage_interface::{DbReader, Order}; use anyhow::{ensure, format_err, Result}; -use aptos_types::{state_store::state_key::StateKey, transaction::Version}; +use aptos_types::{state_store::state_key_prefix::StateKeyPrefix, transaction::Version}; use aptos_vm::data_cache::{IntoMoveResolver, RemoteStorageOwned}; use futures::{channel::oneshot, SinkExt}; -use std::{ - convert::{Infallible, TryFrom}, - sync::Arc, -}; +use std::{convert::Infallible, sync::Arc}; use storage_interface::state_view::{DbStateView, DbStateViewAtVersion, LatestDbStateView}; use warp::{filters::BoxedFilter, Filter, Reply}; @@ -100,25 +96,11 @@ impl Context { address: AccountAddress, version: u64, ) -> Result> { - let state = self.get_account_state_blob(address, version)?; - Ok(match state { - Some(blob) => Some(AccountState::try_from(&blob)?), - None => None, - }) - } - - pub fn get_account_state_blob( - &self, - account: AccountAddress, - version: u64, - ) -> Result> { - let (state_value, _) = self.db.get_state_value_with_proof_by_version( - &StateKey::AccountAddressKey(account), - version, - )?; - Ok(state_value.map(|x| { - AccountStateBlob::try_from(x).expect("Can't convert state value to account state blob") - })) + AccountState::from_access_paths_and_values( + &self + .db + .get_state_values_by_key_prefix(&StateKeyPrefix::from(address), version)?, + ) } pub fn get_block_timestamp(&self, version: u64) -> Result { diff --git a/api/src/tests/accounts_test.rs b/api/src/tests/accounts_test.rs index a33e3e2247e8b..236b092f995d6 100644 --- a/api/src/tests/accounts_test.rs +++ b/api/src/tests/accounts_test.rs @@ -59,6 +59,15 @@ async fn test_account_resources_response() { context.check_golden_output(resp); } +#[tokio::test] +async fn test_account_state_blob_response() { + let mut context = new_test_context(current_function_name!()); + let address = "0xA550C18"; + + let resp = context.get(&account_blob(address)).await; + context.check_golden_output(resp); +} + #[tokio::test] async fn test_account_modules() { let mut context = new_test_context(current_function_name!()); @@ -198,6 +207,10 @@ fn account_resources(address: &str) -> String { format!("/accounts/{}/resources", address) } +fn account_blob(address: &str) -> String { + format!("/accounts/{}/blob", address) +} + fn account_resources_with_ledger_version(address: &str, ledger_version: i128) -> String { format!("{}?version={}", account_resources(address), ledger_version) } diff --git a/api/types/src/convert.rs b/api/types/src/convert.rs index 32fb4781273b5..3d242fce777f2 100644 --- a/api/types/src/convert.rs +++ b/api/types/src/convert.rs @@ -215,8 +215,8 @@ impl<'a, R: MoveResolverExt + ?Sized> MoveConverter<'a, R> { StateKey::TableItem { handle, key } => { self.try_table_item_into_write_set_change(hash, handle, key, op) } - StateKey::AccountAddressKey(_) | StateKey::Raw(_) => Err(format_err!( - "Can't convert state key {:?} to WriteSetChange", + StateKey::Raw(_) => Err(format_err!( + "Can't convert account raw key {:?} to WriteSetChange", state_key )), } diff --git a/aptos-move/aptos-validator-interface/src/lib.rs b/aptos-move/aptos-validator-interface/src/lib.rs index 4245541c55723..47291044e4164 100644 --- a/aptos-move/aptos-validator-interface/src/lib.rs +++ b/aptos-move/aptos-validator-interface/src/lib.rs @@ -113,23 +113,9 @@ impl<'a> DebuggerStateView<'a> { state_key: &StateKey, version: Version, ) -> Result>> { - match state_key { - // This is a temporary hack until we rollout fine grained staorage for account resources - // in the DB. - StateKey::AccessPath(access_path) => { - match self - .db - .get_account_state_by_version(access_path.address, version)? - { - None => Ok(None), - Some(account_state) => Ok(account_state.get(&access_path.path).cloned()), - } - } - - _ => match self.db.get_state_value_by_version(state_key, version)? { - None => Ok(None), - Some(state_value) => Ok(state_value.maybe_bytes.as_ref().cloned()), - }, + match self.db.get_state_value_by_version(state_key, version)? { + None => Ok(None), + Some(state_value) => Ok(state_value.maybe_bytes), } } } diff --git a/aptos-move/aptos-validator-interface/src/storage_interface.rs b/aptos-move/aptos-validator-interface/src/storage_interface.rs index 5f281e30f6ccb..c362c2df300d3 100644 --- a/aptos-move/aptos-validator-interface/src/storage_interface.rs +++ b/aptos-move/aptos-validator-interface/src/storage_interface.rs @@ -9,11 +9,11 @@ use aptos_types::{ account_state::AccountState, contract_event::EventWithProof, event::EventKey, - state_store::{state_key::StateKey, state_value::StateValue}, + state_store::{state_key::StateKey, state_key_prefix::StateKeyPrefix, state_value::StateValue}, transaction::{Transaction, Version}, }; use aptosdb::AptosDB; -use std::{convert::TryFrom, path::Path, sync::Arc}; +use std::{path::Path, sync::Arc}; use storage_interface::{DbReader, Order}; pub struct DBDebuggerInterface(Arc); @@ -35,11 +35,11 @@ impl AptosValidatorInterface for DBDebuggerInterface { account: AccountAddress, version: Version, ) -> Result> { - self.0 - .get_state_value_with_proof_by_version(&StateKey::AccountAddressKey(account), version)? - .0 - .map(|s| AccountState::try_from(&s)) - .transpose() + AccountState::from_access_paths_and_values( + &self + .0 + .get_state_values_by_key_prefix(&StateKeyPrefix::from(account), version)?, + ) } fn get_state_value_by_version( diff --git a/aptos-move/transaction-replay/src/unit_tests/mod.rs b/aptos-move/transaction-replay/src/unit_tests/mod.rs index bdf474182bd7f..e4d56bc774483 100644 --- a/aptos-move/transaction-replay/src/unit_tests/mod.rs +++ b/aptos-move/transaction-replay/src/unit_tests/mod.rs @@ -6,17 +6,15 @@ mod bisection_tests; use crate::AptosValidatorInterface; use anyhow::{bail, Result}; use aptos_types::{ - access_path::AccessPath, account_address::AccountAddress, account_state::AccountState, - account_state_blob::AccountStateBlob, contract_event::EventWithProof, event::EventKey, state_store::{state_key::StateKey, state_value::StateValue}, transaction::{Transaction, Version, WriteSetPayload}, write_set::WriteOp, }; -use std::{collections::HashMap, convert::TryFrom}; +use std::collections::HashMap; use vm_genesis::{generate_genesis_change_set_for_testing, GenesisOptions}; pub struct TestInterface { @@ -51,26 +49,13 @@ impl TestInterface { let changeset = generate_genesis_change_set_for_testing(GenesisOptions::Compiled); let mut state_db = HashMap::new(); for (key, op) in changeset.write_set().iter() { - let ap = AccessPath::try_from(key.clone()) - .expect("State key can't be converted to access path"); match op { - WriteOp::Value(v) => state_db - .entry((0, ap.address)) - .or_insert_with(AccountState::default) - .insert(ap.path.clone(), v.clone()), + WriteOp::Value(v) => state_db.insert((0, key.clone()), StateValue::from(v.clone())), _ => panic!("Unexpected delete"), }; } Self { - state_db: state_db - .into_iter() - .map(|((version, address), account_state)| { - ( - (version, StateKey::AccountAddressKey(address)), - StateValue::from(AccountStateBlob::try_from(&account_state).unwrap()), - ) - }) - .collect(), + state_db, transaction_store: vec![Transaction::GenesisTransaction(WriteSetPayload::Direct( changeset, ))], @@ -82,13 +67,10 @@ impl TestInterface { impl AptosValidatorInterface for TestInterface { fn get_account_state_by_version( &self, - account: AccountAddress, - version: Version, + _account: AccountAddress, + _version: Version, ) -> Result> { - self.state_db - .get(&(version, StateKey::AccountAddressKey(account))) - .map(AccountState::try_from) - .transpose() + unimplemented!() } fn get_state_value_by_version( diff --git a/aptos-node/Cargo.toml b/aptos-node/Cargo.toml index b262b203b1f5f..7dab500116dd0 100644 --- a/aptos-node/Cargo.toml +++ b/aptos-node/Cargo.toml @@ -38,6 +38,7 @@ aptos-types = { path = "../types" } aptos-vm = { path = "../aptos-move/aptos-vm" } aptos-workspace-hack = { version = "0.1", path = "../crates/aptos-workspace-hack" } aptosdb = { path = "../storage/aptosdb" } +aptos-state-view = { path = "../storage/state-view" } backup-service = { path = "../storage/backup/backup-service" } cached-framework-packages = { path = "../aptos-move/framework/cached-packages" } consensus = { path = "../consensus" } diff --git a/aptos-node/src/lib.rs b/aptos-node/src/lib.rs index 49ed387e24c63..a5add389d90a2 100644 --- a/aptos-node/src/lib.rs +++ b/aptos-node/src/lib.rs @@ -14,6 +14,7 @@ use aptos_data_client::aptosnet::AptosNetDataClient; use aptos_infallible::RwLock; use aptos_logger::{prelude::*, Logger}; use aptos_metrics::{get_public_json_metrics, get_public_metrics, metric_server}; +use aptos_state_view::account_with_state_view::AsAccountWithStateView; use aptos_telemetry::{ constants::{APTOS_NODE_PUSH_METRICS, CHAIN_ID_METRIC, PEER_ID_METRIC}, send_data, @@ -21,11 +22,10 @@ use aptos_telemetry::{ use aptos_time_service::TimeService; use aptos_types::{ account_config::aptos_root_address, - account_state::AccountState, + account_view::AccountView, chain_id::ChainId, move_resource::MoveStorage, on_chain_config::{VMPublishingOption, ON_CHAIN_CONFIG_REGISTRY}, - state_store::state_key::StateKey, waypoint::Waypoint, }; use aptos_vm::AptosVM; @@ -52,7 +52,6 @@ use state_sync_v1::network::{StateSyncEvents, StateSyncSender}; use std::{ boxed::Box, collections::{HashMap, HashSet}, - convert::TryFrom, io::Write, net::ToSocketAddrs, path::PathBuf, @@ -63,7 +62,7 @@ use std::{ thread, time::Instant, }; -use storage_interface::DbReaderWriter; +use storage_interface::{state_view::DbStateViewAtVersion, DbReaderWriter}; use storage_service::start_storage_service_with_db; use storage_service_client::{StorageServiceClient, StorageServiceMultiSender}; use storage_service_server::{ @@ -225,19 +224,15 @@ pub fn load_test_environment( // Fetch chain ID from on-chain resource fn fetch_chain_id(db: &DbReaderWriter) -> ChainId { - let blob = db + let synced_version = (&*db.reader) + .fetch_synced_version() + .expect("[aptos-node] failed fetching synced version."); + let db_state_view = db .reader - .get_state_value_with_proof_by_version( - &StateKey::AccountAddressKey(aptos_root_address()), - (&*db.reader) - .fetch_synced_version() - .expect("[aptos-node] failed fetching synced version."), - ) - .expect("[aptos-node] failed to get Aptos root address account state") - .0 - .expect("[aptos-node] missing Aptos root address account state"); - AccountState::try_from(&blob) - .expect("[aptos-node] failed to convert blob to account state") + .state_view_at_version(Some(synced_version)) + .expect("[aptos-node] failed to create db state view"); + db_state_view + .as_account_with_state_view(&aptos_root_address()) .get_chain_id_resource() .expect("[aptos-node] failed to get chain ID resource") .expect("[aptos-node] missing chain ID resource") diff --git a/config/management/genesis/Cargo.toml b/config/management/genesis/Cargo.toml index daf99a4bc1c6e..1b7f6985066cd 100644 --- a/config/management/genesis/Cargo.toml +++ b/config/management/genesis/Cargo.toml @@ -29,6 +29,8 @@ aptos-workspace-hack = { version = "0.1", path = "../../../crates/aptos-workspac aptos-temppath = { path = "../../../crates/aptos-temppath" } aptos-vm = { path = "../../../aptos-move/aptos-vm" } aptosdb = { path = "../../../storage/aptosdb" } +aptos-state-view = { path = "../../../storage/state-view" } + cached-framework-packages = { path = "../../../aptos-move/framework/cached-packages" } storage-interface = { path = "../../../storage/storage-interface" } vm-genesis = { path = "../../../aptos-move/vm-genesis" } diff --git a/config/management/genesis/src/verify.rs b/config/management/genesis/src/verify.rs index cf4f036cbf333..ed18ef38a775a 100644 --- a/config/management/genesis/src/verify.rs +++ b/config/management/genesis/src/verify.rs @@ -10,17 +10,17 @@ use aptos_management::{ config::ConfigPath, error::Error, secure_backend::ValidatorBackend, storage::StorageWrapper as Storage, }; +use aptos_state_view::account_with_state_view::AsAccountWithStateView; use aptos_temppath::TempPath; use aptos_types::{ - account_address::AccountAddress, account_config, account_state::AccountState, + account_address::AccountAddress, account_config, account_view::AccountView, network_address::NetworkAddress, on_chain_config::ValidatorSet, - state_store::state_key::StateKey, validator_config::ValidatorConfig, waypoint::Waypoint, + validator_config::ValidatorConfig, waypoint::Waypoint, }; use aptos_vm::AptosVM; use aptosdb::AptosDB; use executor::db_bootstrapper; use std::{ - convert::TryFrom, fmt::Write, fs::File, io::Read, @@ -28,7 +28,7 @@ use std::{ str::FromStr, sync::Arc, }; -use storage_interface::{DbReader, DbReaderWriter}; +use storage_interface::{state_view::LatestDbStateView, DbReader, DbReaderWriter}; use structopt::StructOpt; /// Prints the public information within a store @@ -239,15 +239,13 @@ fn validator_config( validator_account: AccountAddress, reader: Arc, ) -> Result { - let blob = reader - .get_latest_state_value(StateKey::AccountAddressKey( - account_config::validator_set_address(), - )) - .map_err(|e| Error::UnexpectedError(format!("ValidatorSet Account issue {}", e)))? - .ok_or_else(|| Error::UnexpectedError("ValidatorSet Account not found".into()))?; - let account_state = AccountState::try_from(&blob) - .map_err(|e| Error::UnexpectedError(format!("Failed to parse blob: {}", e)))?; - let validator_set: ValidatorSet = account_state + let db_state_view = reader + .latest_state_view() + .map_err(|e| Error::UnexpectedError(format!("Can't create latest db state view {}", e)))?; + let address = account_config::validator_set_address(); + let account_state_view = db_state_view.as_account_with_state_view(&address); + + let validator_set: ValidatorSet = account_state_view .get_validator_set() .map_err(|e| Error::UnexpectedError(format!("ValidatorSet issue {}", e)))? .ok_or_else(|| Error::UnexpectedError("ValidatorSet does not exist".into()))?; diff --git a/crates/aptos-rest-client/src/lib.rs b/crates/aptos-rest-client/src/lib.rs index e7ddad53680d7..eb154a75bb064 100644 --- a/crates/aptos-rest-client/src/lib.rs +++ b/crates/aptos-rest-client/src/lib.rs @@ -149,6 +149,7 @@ impl Client { if resp.status() != StatusCode::NOT_FOUND { let txn_resp: Response = self.json(resp).await?; let (transaction, state) = txn_resp.into_parts(); + if !transaction.is_pending() { if !transaction.success() { return Err(anyhow!( diff --git a/execution/executor-benchmark/Cargo.toml b/execution/executor-benchmark/Cargo.toml index 60481f9424690..c6057101477cd 100644 --- a/execution/executor-benchmark/Cargo.toml +++ b/execution/executor-benchmark/Cargo.toml @@ -36,6 +36,7 @@ executor-types = { path = "../executor-types" } schemadb = { path = "../../storage/schemadb" } storage-client = { path = "../../storage/storage-client" } storage-interface = { path = "../../storage/storage-interface" } +aptos-state-view = { path = "../../storage/state-view" } aptos-transaction-builder = { path = "../../sdk/transaction-builder" } aptos-sdk = { path = "../../sdk" } diff --git a/execution/executor-benchmark/src/db_generator.rs b/execution/executor-benchmark/src/db_generator.rs index 662496b440bf9..e78f2dd8b9968 100644 --- a/execution/executor-benchmark/src/db_generator.rs +++ b/execution/executor-benchmark/src/db_generator.rs @@ -106,7 +106,7 @@ pub fn run( exe_thread.join().unwrap(); commit_thread.join().unwrap(); // Do a sanity check on the sequence number to make sure all transactions are committed. - generator.verify_sequence_number(db.as_ref()); + generator.verify_sequence_number(db.clone()); let final_version = generator.version(); // Write metadata diff --git a/execution/executor-benchmark/src/lib.rs b/execution/executor-benchmark/src/lib.rs index ca41d6eb11645..b0e4bb16cf7de 100644 --- a/execution/executor-benchmark/src/lib.rs +++ b/execution/executor-benchmark/src/lib.rs @@ -121,7 +121,7 @@ pub fn run_benchmark( // Do a sanity check on the sequence number to make sure all transactions are committed. if verify { - generator.verify_sequence_number(db.as_ref()); + generator.verify_sequence_number(db.clone()); } } diff --git a/execution/executor-benchmark/src/transaction_generator.rs b/execution/executor-benchmark/src/transaction_generator.rs index d077b605a930b..a0d71b6431af1 100644 --- a/execution/executor-benchmark/src/transaction_generator.rs +++ b/execution/executor-benchmark/src/transaction_generator.rs @@ -7,12 +7,12 @@ use aptos_crypto::{ }; use aptos_logger::info; use aptos_sdk::transaction_builder::TransactionFactory; +use aptos_state_view::account_with_state_view::AsAccountWithStateView; use aptos_types::{ account_address::AccountAddress, - account_config::{aptos_root_address, AccountResource}, - account_state_blob::AccountStateBlob, + account_config::aptos_root_address, + account_view::AccountView, chain_id::ChainId, - state_store::state_key::StateKey, transaction::{RawTransaction, SignedTransaction, Transaction, Version}, }; use chrono::Local; @@ -20,14 +20,13 @@ use indicatif::{ProgressBar, ProgressStyle}; use rand::{rngs::StdRng, SeedableRng}; use serde::{Deserialize, Serialize}; use std::{ - convert::TryFrom, fs::File, io::{Read, Write}, path::Path, - sync::mpsc, + sync::{mpsc, Arc}, time::Instant, }; -use storage_interface::DbReader; +use storage_interface::{state_view::LatestDbStateView, DbReader}; const META_FILENAME: &str = "metadata.toml"; const MAX_ACCOUNTS_INVOLVED_IN_P2P: usize = 1_000_000; @@ -331,7 +330,7 @@ impl TransactionGenerator { } /// Verifies the sequence numbers in storage match what we have locally. - pub fn verify_sequence_number(&self, db: &dyn DbReader) { + pub fn verify_sequence_number(&self, db: Arc) { println!( "[{}] verify {} account sequence numbers.", now_fmt!(), @@ -340,14 +339,16 @@ impl TransactionGenerator { let bar = get_progress_bar(self.accounts_cache.len()); for account in &self.accounts_cache { let address = account.address; - let state_value = db - .get_latest_state_value(StateKey::AccountAddressKey(address)) - .expect("Failed to query storage.") - .expect("Account must exist."); - let account_resource = - AccountResource::try_from(&AccountStateBlob::try_from(state_value).unwrap()) - .unwrap(); - assert_eq!(account_resource.sequence_number(), account.sequence_number); + let db_state_view = db.latest_state_view().unwrap(); + let address_account_view = db_state_view.as_account_with_state_view(&address); + assert_eq!( + address_account_view + .get_account_resource() + .unwrap() + .unwrap() + .sequence_number(), + account.sequence_number + ); bar.inc(1); } bar.finish(); diff --git a/execution/executor-test-helpers/Cargo.toml b/execution/executor-test-helpers/Cargo.toml index 188a27c538bc8..f283ea98357ae 100644 --- a/execution/executor-test-helpers/Cargo.toml +++ b/execution/executor-test-helpers/Cargo.toml @@ -16,6 +16,8 @@ rand = "0.8.3" executor = { path = "../executor" } executor-types = { path = "../executor-types" } aptosdb = { path = "../../storage/aptosdb", features = ["fuzzing"] } +aptos-state-view = { path = "../../storage/state-view" } +move-core-types = { git = "https://github.com/move-language/move", rev = "1b6b7513dcc1a5c866f178ca5c1e74beb2ce181e", version = "0.0.4", features=["address32"] } aptos-config = { path = "../../config" } aptos-crypto = { path = "../../crates/aptos-crypto" } aptos-genesis-tool = {path = "../../config/management/genesis", features = ["testing"] } diff --git a/execution/executor-test-helpers/src/integration_test_impl.rs b/execution/executor-test-helpers/src/integration_test_impl.rs index 2fdd4098c01e8..590c6ac13c59e 100644 --- a/execution/executor-test-helpers/src/integration_test_impl.rs +++ b/execution/executor-test-helpers/src/integration_test_impl.rs @@ -6,15 +6,15 @@ use crate::{ }; use anyhow::{anyhow, ensure, Result}; use aptos_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use aptos_state_view::account_with_state_view::{AccountWithStateView, AsAccountWithStateView}; use aptos_transaction_builder::aptos_stdlib::{ encode_create_account_script_function, encode_mint_script_function, encode_transfer_script_function, }; use aptos_types::{ account_config::aptos_root_address, - account_state::AccountState, + account_view::AccountView, event::EventKey, - state_store::{state_key::StateKey, state_value::StateValueWithProof}, transaction::{ authenticator::AuthenticationKey, Transaction, TransactionListWithProof, TransactionWithProof, WriteSetPayload, @@ -27,8 +27,9 @@ use aptosdb::AptosDB; use executor::block_executor::BlockExecutor; use executor_types::BlockExecutorTrait; use rand::SeedableRng; -use std::{convert::TryFrom, sync::Arc}; -use storage_interface::{DbReaderWriter, Order}; +use std::sync::Arc; + +use storage_interface::{state_view::DbStateViewAtVersion, DbReaderWriter, Order}; pub fn test_execution_with_storage_impl() -> Arc { let (genesis, validators) = vm_genesis::test_genesis_change_set_and_validators(Some(1)); @@ -225,35 +226,29 @@ pub fn test_execution_with_storage_impl() -> Arc { .unwrap(); verify_committed_txn_status(t6.as_ref(), &block1[8]).unwrap(); - let account1_state_with_proof = db + let db_state_view = db .reader - .get_state_value_with_proof( - StateKey::AccountAddressKey(account1), - current_version, - current_version, - ) + .state_view_at_version(Some(current_version)) .unwrap(); - verify_account_balance(&account1_state_with_proof, |x| x == 1_910_000).unwrap(); + let account1_state_view = db_state_view.as_account_with_state_view(&account1); + verify_account_balance(get_account_balance(&account1_state_view), |x| { + x == 1_910_000 + }) + .unwrap(); - let account2_state_with_proof = db - .reader - .get_state_value_with_proof( - StateKey::AccountAddressKey(account2), - current_version, - current_version, - ) - .unwrap(); - verify_account_balance(&account2_state_with_proof, |x| x == 1_210_000).unwrap(); + let account2_state_view = db_state_view.as_account_with_state_view(&account2); - let account3_state_with_proof = db - .reader - .get_state_value_with_proof( - StateKey::AccountAddressKey(account3), - current_version, - current_version, - ) - .unwrap(); - verify_account_balance(&account3_state_with_proof, |x| x == 1_080_000).unwrap(); + verify_account_balance(get_account_balance(&account2_state_view), |x| { + x == 1_210_000 + }) + .unwrap(); + + let account3_state_view = db_state_view.as_account_with_state_view(&account3); + + verify_account_balance(get_account_balance(&account3_state_view), |x| { + x == 1_080_000 + }) + .unwrap(); let transaction_list_with_proof = db .reader @@ -326,16 +321,14 @@ pub fn test_execution_with_storage_impl() -> Arc { ) .unwrap(); assert_eq!(account3_received_events.len(), 2); - - let account4_state = db + let account4_resource = db .reader - .get_state_value_with_proof( - StateKey::AccountAddressKey(account4), - current_version, - current_version, - ) + .state_view_at_version(Some(current_version)) + .unwrap() + .as_account_with_state_view(&account4) + .get_account_resource() .unwrap(); - assert!(account4_state.value.is_none()); + assert!(account4_resource.is_none()); let account4_transaction = db .reader @@ -386,25 +379,24 @@ pub fn test_execution_with_storage_impl() -> Arc { .unwrap(); verify_committed_txn_status(t20.as_ref(), &block2[13]).unwrap(); - let account1_state_with_proof = db + let db_state_view = db .reader - .get_state_value_with_proof( - StateKey::AccountAddressKey(account1), - current_version, - current_version, - ) + .state_view_at_version(Some(current_version)) .unwrap(); - verify_account_balance(&account1_state_with_proof, |x| x == 1_770_000).unwrap(); - let account3_state_with_proof = db - .reader - .get_state_value_with_proof( - StateKey::AccountAddressKey(account3), - current_version, - current_version, - ) - .unwrap(); - verify_account_balance(&account3_state_with_proof, |x| x == 1_220_000).unwrap(); + let account1_state_view = db_state_view.as_account_with_state_view(&account1); + + verify_account_balance(get_account_balance(&account1_state_view), |x| { + x == 1_770_000 + }) + .unwrap(); + + let account3_state_view = db_state_view.as_account_with_state_view(&account3); + + verify_account_balance(get_account_balance(&account3_state_view), |x| { + x == 1_220_000 + }) + .unwrap(); let transaction_list_with_proof = db .reader @@ -438,7 +430,7 @@ pub fn test_execution_with_storage_impl() -> Arc { .reader .get_events( &EventKey::new_from_address(&account3, 1), - u64::max_value(), + u64::MAX, Order::Descending, 10, ) @@ -477,18 +469,18 @@ pub fn create_db_and_executor>( (db, dbrw, executor, waypoint) } -pub fn verify_account_balance(account_state_with_proof: &StateValueWithProof, f: F) -> Result<()> +pub fn get_account_balance(account_state_view: &AccountWithStateView) -> u64 { + account_state_view + .get_balance_resource() + .unwrap() + .map(|b| b.coin()) + .unwrap_or(0) +} + +pub fn verify_account_balance(balance: u64, f: F) -> Result<()> where F: Fn(u64) -> bool, { - let balance = if let Some(blob) = &account_state_with_proof.value { - AccountState::try_from(blob)? - .get_balance_resources()? - .map(|b| b.coin()) - .unwrap_or(0) - } else { - 0 - }; ensure!( f(balance), "balance {} doesn't satisfy the condition passed in", diff --git a/execution/executor-types/src/lib.rs b/execution/executor-types/src/lib.rs index fad3a1384e951..8b9995e57421a 100644 --- a/execution/executor-types/src/lib.rs +++ b/execution/executor-types/src/lib.rs @@ -376,12 +376,12 @@ impl Default for ExecutedTrees { } pub struct ProofReader { - account_to_proof: HashMap, + proofs: HashMap, } impl ProofReader { - pub fn new(account_to_proof: HashMap) -> Self { - ProofReader { account_to_proof } + pub fn new(proofs: HashMap) -> Self { + ProofReader { proofs } } pub fn new_empty() -> Self { @@ -391,7 +391,7 @@ impl ProofReader { impl ProofRead for ProofReader { fn get_proof(&self, key: HashValue) -> Option<&SparseMerkleProof> { - self.account_to_proof.get(&key) + self.proofs.get(&key) } } diff --git a/execution/executor/src/components/apply_chunk_output.rs b/execution/executor/src/components/apply_chunk_output.rs index efbb55e94804e..56a61e926d0e8 100644 --- a/execution/executor/src/components/apply_chunk_output.rs +++ b/execution/executor/src/components/apply_chunk_output.rs @@ -10,11 +10,9 @@ use aptos_crypto::{ HashValue, }; use aptos_logger::error; +use aptos_state_view::account_with_state_cache::AsAccountWithStateCache; use aptos_types::{ - access_path::AccessPath, - account_address::AccountAddress, - account_state::AccountState, - account_state_blob::AccountStateBlob, + account_view::AccountView, contract_event::ContractEvent, epoch_state::EpochState, event::EventKey, @@ -32,7 +30,6 @@ use once_cell::sync::Lazy; use scratchpad::SparseMerkleTree; use std::{ collections::{hash_map, HashMap, HashSet}, - convert::TryFrom, iter::repeat, ops::Deref, sync::Arc, @@ -166,17 +163,14 @@ impl ApplyChunkOutput { )> { let StateCache { frozen_base, - mut accounts, - mut state_cache, + state_cache: mut state_cache_map, proofs, } = state_cache; // Apply write sets to account states in the AccountCache, resulting in new account states. let state_store_updates = to_keep .iter() - .map(|(t, o)| { - process_write_set(t, &mut accounts, &mut state_cache, o.write_set().clone()) - }) + .map(|(t, o)| process_write_set(t, &mut state_cache_map, o.write_set().clone())) .collect::>>()?; // Apply new account states to the base state tree, resulting in updated state tree. @@ -192,7 +186,7 @@ impl ApplyChunkOutput { // Get the updated validator set from updated account state. let next_epoch_state = if new_epoch { - Some(Self::parse_validator_set(&accounts)?) + Some(Self::parse_validator_set(&state_cache_map)?) } else { None }; @@ -218,23 +212,15 @@ impl ApplyChunkOutput { .collect() } - fn parse_validator_set(accounts: &HashMap) -> Result { - let validator_set = accounts - .get(&on_chain_config::config_address()) - .map(|state| { - state - .get_validator_set()? - .ok_or_else(|| anyhow!("ValidatorSet does not exist")) - }) - .ok_or_else(|| anyhow!("ValidatorSet account does not exist"))??; - let configuration = accounts - .get(&on_chain_config::config_address()) - .map(|state| { - state - .get_configuration_resource()? - .ok_or_else(|| anyhow!("Configuration does not exist")) - }) - .ok_or_else(|| anyhow!("Association account does not exist"))??; + fn parse_validator_set(state_cache: &HashMap) -> Result { + let on_chain_config_address = on_chain_config::config_address(); + let account_state_view = state_cache.as_account_with_state_cache(&on_chain_config_address); + let validator_set = account_state_view + .get_validator_set()? + .ok_or_else(|| anyhow!("ValidatorSet not touched on epoch change"))?; + let configuration = account_state_view + .get_configuration_resource()? + .ok_or_else(|| anyhow!("Configuration resource not touched on epoch change"))?; Ok(EpochState { epoch: configuration.epoch(), @@ -304,30 +290,6 @@ pub fn ensure_no_retry(to_retry: Vec) -> Result<()> { Ok(()) } -fn process_access_path_write_op( - transaction: &Transaction, - account_to_state: &mut HashMap, - addresses: &mut HashSet, - access_path: AccessPath, - write_op: WriteOp, -) -> Result<()> { - let address = access_path.address; - let path = access_path.path; - match account_to_state.entry(address) { - hash_map::Entry::Occupied(mut entry) => { - update_account_state(entry.get_mut(), path, write_op); - } - hash_map::Entry::Vacant(entry) => { - ensure_txn_valid_for_vacant_entry(transaction)?; - let mut account_state = Default::default(); - update_account_state(&mut account_state, path, write_op); - entry.insert(account_state); - } - } - addresses.insert(StateKey::AccountAddressKey(address)); - Ok(()) -} - fn ensure_txn_valid_for_vacant_entry(transaction: &Transaction) -> Result<()> { // Before writing to an account, VM should always read that account. So we // should not reach this code path. The exception is genesis transaction (and @@ -380,7 +342,6 @@ fn process_state_key_write_op( /// on the write set. Returns the blob value of all these accounts. pub fn process_write_set( transaction: &Transaction, - account_to_state: &mut HashMap, state_cache: &mut HashMap, write_set: WriteSet, ) -> Result> { @@ -389,59 +350,25 @@ pub fn process_write_set( // Find all addresses this transaction touches while processing each write op. let mut updated_keys = HashSet::new(); for (state_key, write_op) in write_set.into_iter() { - match &state_key { - StateKey::AccessPath(access_path) => process_access_path_write_op( - transaction, - account_to_state, - &mut updated_keys, - access_path.clone(), - write_op, - )?, - StateKey::AccountAddressKey(_) => { - bail!("Account address state key is not expected in write set") - } - // For now, we only support write set with access path, this needs to be updated once - // we support table items - StateKey::Raw(_) | StateKey::TableItem { .. } => process_state_key_write_op( - transaction, - state_cache, - &mut updated_keys, - state_key, - write_op, - )?, - } + process_state_key_write_op( + transaction, + state_cache, + &mut updated_keys, + state_key, + write_op, + )?; } for state_key in updated_keys { - match state_key { - StateKey::AccountAddressKey(address) => { - let account_state = account_to_state - .get(&address) - .expect("Address should exist."); - state_updates.insert( - state_key, - StateValue::from(AccountStateBlob::try_from(account_state)?), - ); - } - _ => { - let state_value = state_cache - .get(&state_key) - .expect("State value should exist."); - state_updates.insert(state_key, state_value.clone()); - } - } + let state_value = state_cache + .get(&state_key) + .expect("State value should exist."); + state_updates.insert(state_key, state_value.clone()); } Ok(state_updates) } -fn update_account_state(account_state: &mut AccountState, path: Vec, write_op: WriteOp) { - match write_op { - WriteOp::Value(new_value) => account_state.insert(path, new_value), - WriteOp::Deletion => account_state.remove(&path), - }; -} - pub trait IntoLedgerView { fn into_ledger_view(self, db: &Arc) -> Result; } diff --git a/execution/executor/src/mock_vm/mod.rs b/execution/executor/src/mock_vm/mod.rs index 3faf2941a2bb1..d78c9545ea1f5 100644 --- a/execution/executor/src/mock_vm/mod.rs +++ b/execution/executor/src/mock_vm/mod.rs @@ -9,12 +9,11 @@ use aptos_state_view::StateView; use aptos_types::{ access_path::AccessPath, account_address::AccountAddress, - account_config::{aptos_root_address, validator_set_address}, chain_id::ChainId, contract_event::ContractEvent, event::EventKey, on_chain_config::{ - config_address, dpn_access_path_for_config, new_epoch_event_key, ConfigurationResource, + access_path_for_config, config_address, new_epoch_event_key, ConfigurationResource, OnChainConfig, ValidatorSet, }, state_store::state_key::StateKey, @@ -146,8 +145,14 @@ impl VMExecutor for MockVM { )); } MockVMTransaction::Reconfiguration => { - read_balance_from_storage(state_view, &balance_ap(validator_set_address())); - read_balance_from_storage(state_view, &balance_ap(aptos_root_address())); + read_state_value_from_storage( + state_view, + &access_path_for_config(ValidatorSet::CONFIG_ID), + ); + read_state_value_from_storage( + state_view, + &AccessPath::new(config_address(), ConfigurationResource::resource_path()), + ); outputs.push(TransactionOutput::new( // WriteSet cannot be empty so use genesis writeset only for testing. gen_genesis_writeset(), @@ -208,6 +213,15 @@ fn read_u64_from_storage(state_view: &impl StateView, access_path: &AccessPath) .map_or(0, |bytes| decode_bytes(&bytes)) } +fn read_state_value_from_storage( + state_view: &impl StateView, + access_path: &AccessPath, +) -> Option> { + state_view + .get_state_value(&StateKey::AccessPath(access_path.clone())) + .expect("Failed to query storage.") +} + fn decode_bytes(bytes: &[u8]) -> u64 { let mut buf = [0; 8]; buf.copy_from_slice(bytes); @@ -224,7 +238,7 @@ fn seqnum_ap(account: AccountAddress) -> AccessPath { fn gen_genesis_writeset() -> WriteSet { let mut write_set = WriteSetMut::default(); - let validator_set_ap = dpn_access_path_for_config(ValidatorSet::CONFIG_ID); + let validator_set_ap = access_path_for_config(ValidatorSet::CONFIG_ID); write_set.push(( StateKey::AccessPath(validator_set_ap), WriteOp::Value(bcs::to_bytes(&ValidatorSet::new(vec![])).unwrap()), diff --git a/execution/executor/tests/db_bootstrapper_test.rs b/execution/executor/tests/db_bootstrapper_test.rs index c4cd987b67027..bd731ae1b6354 100644 --- a/execution/executor/tests/db_bootstrapper_test.rs +++ b/execution/executor/tests/db_bootstrapper_test.rs @@ -5,6 +5,7 @@ use anyhow::Result; use aptos_crypto::{ed25519::Ed25519PrivateKey, HashValue, PrivateKey, Uniform}; +use aptos_state_view::account_with_state_view::AsAccountWithStateView; use aptos_temppath::TempPath; use aptos_transaction_builder::aptos_stdlib::{ encode_create_account_script_function, encode_mint_script_function, @@ -14,12 +15,11 @@ use aptos_types::{ access_path::AccessPath, account_address::AccountAddress, account_config::{aptos_root_address, BalanceResource}, - account_state::AccountState, + account_view::AccountView, contract_event::ContractEvent, on_chain_config, on_chain_config::{ - access_path_for_config, config_address, dpn_access_path_for_config, ConfigurationResource, - OnChainConfig, ValidatorSet, + access_path_for_config, config_address, ConfigurationResource, OnChainConfig, ValidatorSet, }, proof::SparseMerkleRangeProof, state_store::{state_key::StateKey, state_value::StateKeyAndValue}, @@ -48,8 +48,10 @@ use move_core_types::{ move_resource::{MoveResource, MoveStructType}, }; use rand::SeedableRng; -use std::{convert::TryFrom, sync::Arc}; -use storage_interface::{DbReader, DbReaderWriter, StateSnapshotReceiver}; +use std::sync::Arc; +use storage_interface::{ + state_view::LatestDbStateView, DbReader, DbReaderWriter, StateSnapshotReceiver, +}; #[test] fn test_empty_db() { @@ -179,27 +181,23 @@ fn get_transfer_transaction( } fn get_balance(account: &AccountAddress, db: &DbReaderWriter) -> u64 { - let account_state_blob = db - .reader - .get_latest_state_value(StateKey::AccountAddressKey(*account)) - .unwrap() - .unwrap(); - let account_state = AccountState::try_from(&account_state_blob).unwrap(); - account_state - .get_balance_resources() + let db_state_view = db.reader.latest_state_view().unwrap(); + let account_state_view = db_state_view.as_account_with_state_view(account); + account_state_view + .get_balance_resource() .unwrap() .unwrap() .coin() } fn get_configuration(db: &DbReaderWriter) -> ConfigurationResource { - let config_blob = db - .reader - .get_latest_state_value(StateKey::AccountAddressKey(config_address())) + let db_state_view = db.reader.latest_state_view().unwrap(); + let config_address = config_address(); + let config_account_state_view = db_state_view.as_account_with_state_view(&config_address); + config_account_state_view + .get_configuration_resource() + .unwrap() .unwrap() - .unwrap(); - let config_state = AccountState::try_from(&config_blob).unwrap(); - config_state.get_configuration_resource().unwrap().unwrap() } fn get_state_backup( @@ -254,6 +252,7 @@ fn test_pre_genesis() { let tmp_dir = TempPath::new(); let (db, db_rw) = DbReaderWriter::wrap(AptosDB::new_for_test(&tmp_dir)); let signer = ValidatorSigner::new(genesis.1[0].data.address, genesis.1[0].key.clone()); + let waypoint = bootstrap_genesis::(&db_rw, &genesis_txn).unwrap(); // Mint for 2 demo accounts. @@ -278,6 +277,7 @@ fn test_pre_genesis() { // Nor is it able to boot BlockExecutor. assert!(db_rw.reader.get_startup_info().unwrap().is_none()); + let config_resource = ConfigurationResource::default().bump_epoch_for_test(); // New genesis transaction: set validator set and overwrite account1 balance let genesis_txn = Transaction::GenesisTransaction(WriteSetPayload::Direct(ChangeSet::new( WriteSetMut::new(vec![ @@ -285,6 +285,13 @@ fn test_pre_genesis() { StateKey::AccessPath(access_path_for_config(ValidatorSet::CONFIG_ID)), WriteOp::Value(bcs::to_bytes(&ValidatorSet::new(vec![])).unwrap()), ), + ( + StateKey::AccessPath(AccessPath::new( + config_address(), + ConfigurationResource::resource_path(), + )), + WriteOp::Value(bcs::to_bytes(&config_resource).unwrap()), + ), ( StateKey::AccessPath(AccessPath::new(account1, BalanceResource::resource_path())), WriteOp::Value(bcs::to_bytes(&BalanceResource::new(1000)).unwrap()), @@ -361,7 +368,7 @@ fn test_new_genesis() { let genesis_txn = Transaction::GenesisTransaction(WriteSetPayload::Direct(ChangeSet::new( WriteSetMut::new(vec![ ( - StateKey::AccessPath(dpn_access_path_for_config(ValidatorSet::CONFIG_ID)), + StateKey::AccessPath(access_path_for_config(ValidatorSet::CONFIG_ID)), WriteOp::Value(bcs::to_bytes(&ValidatorSet::new(vec![])).unwrap()), ), ( diff --git a/execution/executor/tests/storage_integration_test.rs b/execution/executor/tests/storage_integration_test.rs index 9023d48f566c8..a4282c9bc5f01 100644 --- a/execution/executor/tests/storage_integration_test.rs +++ b/execution/executor/tests/storage_integration_test.rs @@ -2,12 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 use aptos_crypto::PrivateKey; +use aptos_state_view::account_with_state_view::AsAccountWithStateView; use aptos_transaction_builder::aptos_stdlib::{ encode_mint_script_function, encode_set_version_script_function, }; use aptos_types::{ - account_config::aptos_root_address, - account_state::AccountState, + access_path::AccessPath, + account_config::{aptos_root_address, AccountResource}, + account_view::AccountView, block_metadata::BlockMetadata, state_store::state_key::StateKey, transaction::{Transaction, WriteSetPayload}, @@ -21,7 +23,8 @@ use executor_test_helpers::{ }, }; use executor_types::BlockExecutorTrait; -use std::convert::TryFrom; +use move_core_types::move_resource::MoveStructType; +use storage_interface::state_view::DbStateViewAtVersion; #[test] fn test_genesis() { @@ -43,12 +46,16 @@ fn test_genesis() { let li = state_proof.latest_ledger_info(); assert_eq!(li.version(), 0); - let aptos_root_account = db + let account_resource_path = StateKey::AccessPath(AccessPath::new( + aptos_root_address(), + AccountResource::struct_tag().access_vector(), + )); + let aptos_root_account_resource = db .reader - .get_state_value_with_proof(StateKey::AccountAddressKey(aptos_root_address()), 0, 0) + .get_state_value_with_proof(account_resource_path.clone(), 0, 0) .unwrap(); - aptos_root_account - .verify(li, 0, StateKey::AccountAddressKey(aptos_root_address())) + aptos_root_account_resource + .verify(li, 0, account_resource_path) .unwrap(); } @@ -70,25 +77,16 @@ fn test_reconfiguration() { // test the current keys in the validator's account equals to the key in the validator set let state_proof = db.reader.get_state_proof(0).unwrap(); let current_version = state_proof.latest_ledger_info().version(); - let validator_account_state_with_proof = db + let db_state_view = db .reader - .get_state_value_with_proof( - StateKey::AccountAddressKey(validator_account), - current_version, - current_version, - ) - .unwrap(); - let aptos_root_account_state_with_proof = db - .reader - .get_state_value_with_proof( - StateKey::AccountAddressKey(aptos_root_address()), - current_version, - current_version, - ) + .state_view_at_version(Some(current_version)) .unwrap(); + let validator_account_state_view = db_state_view.as_account_with_state_view(&validator_account); + let root_address = aptos_root_address(); + let root_account_state_view = db_state_view.as_account_with_state_view(&root_address); + assert_eq!( - AccountState::try_from(&aptos_root_account_state_with_proof.value.unwrap()) - .unwrap() + root_account_state_view .get_validator_set() .unwrap() .unwrap() @@ -96,8 +94,7 @@ fn test_reconfiguration() { .next() .unwrap() .consensus_public_key(), - &AccountState::try_from(&validator_account_state_with_proof.value.unwrap()) - .unwrap() + &validator_account_state_view .get_validator_config_resource() .unwrap() .unwrap() @@ -155,17 +152,15 @@ fn test_reconfiguration() { .unwrap(); verify_committed_txn_status(t3.as_ref(), &txn_block[2]).unwrap(); - let aptos_root_account_state_with_proof = db + let db_state_view = db .reader - .get_state_value_with_proof( - StateKey::AccountAddressKey(aptos_root_address()), - current_version, - current_version, - ) + .state_view_at_version(Some(current_version)) .unwrap(); + + let root_account_state_view2 = db_state_view.as_account_with_state_view(&root_address); + assert_eq!( - AccountState::try_from(&aptos_root_account_state_with_proof.value.unwrap()) - .unwrap() + root_account_state_view2 .get_version() .unwrap() .unwrap() diff --git a/mempool/src/shared_mempool/tasks.rs b/mempool/src/shared_mempool/tasks.rs index 5e34145915738..ebb8875ec7b10 100644 --- a/mempool/src/shared_mempool/tasks.rs +++ b/mempool/src/shared_mempool/tasks.rs @@ -237,7 +237,7 @@ where let seq_numbers = transactions .par_iter() .map(|t| { - get_account_sequence_number(smp.db.as_ref(), t.sender()).map_err(|e| { + get_account_sequence_number(smp.db.clone(), t.sender()).map_err(|e| { error!(LogSchema::new(LogEntry::DBError).error(&e)); counters::DB_ERROR.inc(); e diff --git a/state-sync/inter-component/event-notifications/Cargo.toml b/state-sync/inter-component/event-notifications/Cargo.toml index 34a98a4ebf644..a92340b2926b3 100644 --- a/state-sync/inter-component/event-notifications/Cargo.toml +++ b/state-sync/inter-component/event-notifications/Cargo.toml @@ -21,6 +21,7 @@ aptos-infallible = { path = "../../../crates/aptos-infallible" } aptos-types = { path = "../../../types" } aptos-workspace-hack = { version = "0.1", path = "../../../crates/aptos-workspace-hack" } storage-interface = { path = "../../../storage/storage-interface" } +aptos-state-view = { path = "../../../storage/state-view" } [dev-dependencies] diff --git a/state-sync/inter-component/event-notifications/src/lib.rs b/state-sync/inter-component/event-notifications/src/lib.rs index 0d716889218c3..83ef8428135ba 100644 --- a/state-sync/inter-component/event-notifications/src/lib.rs +++ b/state-sync/inter-component/event-notifications/src/lib.rs @@ -5,14 +5,14 @@ use aptos_id_generator::{IdGenerator, U64IdGenerator}; use aptos_infallible::RwLock; +use aptos_state_view::account_with_state_view::AsAccountWithStateView; use aptos_types::{ - account_state::AccountState, + account_view::AccountView, contract_event::ContractEvent, event::EventKey, move_resource::MoveStorage, on_chain_config, on_chain_config::{config_address, ConfigID, OnChainConfigPayload}, - state_store::state_key::StateKey, transaction::Version, }; use channel::{aptos_channel, message_queues::QueueStyle}; @@ -20,14 +20,13 @@ use futures::{channel::mpsc::SendError, stream::FusedStream, Stream}; use serde::{Deserialize, Serialize}; use std::{ collections::{HashMap, HashSet}, - convert::TryFrom, iter::FromIterator, ops::Deref, pin::Pin, sync::Arc, task::{Context, Poll}, }; -use storage_interface::DbReaderWriter; +use storage_interface::{state_view::DbStateViewAtVersion, DbReaderWriter}; use thiserror::Error; #[cfg(test)] @@ -281,43 +280,33 @@ impl EventSubscriptionService { } } - // Fetch the account state blob - let (account_state_blob, _) = self + let config_address = config_address(); + + let db_state_view = &self .storage .read() .reader - .get_state_value_with_proof_by_version( - &StateKey::AccountAddressKey(config_address()), - version, - ) + .state_view_at_version(Some(version)) .map_err(|error| { Error::UnexpectedErrorEncountered(format!( - "Failed to fetch account state with proof {:?}", + "Failed to create account state view {:?}", error )) })?; - let account_state_blob = account_state_blob.ok_or_else(|| { - Error::UnexpectedErrorEncountered("Missing account state blob!".into()) - })?; - - // Fetch the new epoch from storage - let epoch = AccountState::try_from(&account_state_blob) - .and_then(|state| { - Ok(state - .get_configuration_resource()? - .ok_or_else(|| { - Error::UnexpectedErrorEncountered( - "Configuration resource does not exist!".into(), - ) - })? - .epoch()) - }) + let config_address_account_view = db_state_view.as_account_with_state_view(&config_address); + + let epoch = config_address_account_view + .get_configuration_resource() .map_err(|error| { Error::UnexpectedErrorEncountered(format!( - "Failed to fetch configuration resource! Error: {:?}", + "Failed to fetch Configuration resource {:?}", error )) - })?; + })? + .ok_or_else(|| { + Error::UnexpectedErrorEncountered("Configuration resource does not exist!".into()) + })? + .epoch(); // Return the new on-chain config payload (containing all found configs at this version). Ok(OnChainConfigPayload::new( diff --git a/storage/aptosdb/src/aptosdb_test.rs b/storage/aptosdb/src/aptosdb_test.rs index 466d88a34226a..e3744b1069b48 100644 --- a/storage/aptosdb/src/aptosdb_test.rs +++ b/storage/aptosdb/src/aptosdb_test.rs @@ -635,25 +635,19 @@ fn test_get_latest_tree_state() { ); // unbootstrapped db with pre-genesis state - let address = AccountAddress::ZERO; - let blob = AccountStateBlob::from(vec![1]); + let key = StateKey::Raw(String::from("test_key").into_bytes()); + let value = StateValue::from(String::from("test_val").into_bytes()); + db.db .put::( &NodeKey::new_empty_path(PRE_GENESIS_VERSION), &Node::new_leaf( - StateKey::AccountAddressKey(address).hash(), - StateKeyAndValue::new( - StateKey::AccountAddressKey(address), - StateValue::from(blob.clone()), - ), + key.hash(), + StateKeyAndValue::new(key.clone(), value.clone()), ), ) .unwrap(); - let hash = SparseMerkleLeafNode::new( - StateKey::AccountAddressKey(address).hash(), - StateValue::from(blob).hash(), - ) - .hash(); + let hash = SparseMerkleLeafNode::new(key.hash(), value.hash()).hash(); let pre_genesis = db.get_latest_tree_state().unwrap(); assert_eq!(pre_genesis, TreeState::new(0, vec![], hash)); diff --git a/storage/aptosdb/src/aptossum/mod.rs b/storage/aptosdb/src/aptossum/mod.rs deleted file mode 100644 index c2d2e239245c7..0000000000000 --- a/storage/aptosdb/src/aptossum/mod.rs +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) Aptos -// SPDX-License-Identifier: Apache-2.0 - -use crate::{AptosDB, Order, MAX_LIMIT}; -use anyhow::{ensure, format_err, Result}; -use aptos_config::config::{RocksdbConfig, NO_OP_STORAGE_PRUNER_CONFIG}; -use aptos_types::{ - contract_event::ContractEvent, - event::EventKey, - state_store::{state_key::StateKey, state_value::StateValue}, - transaction::{Transaction, Version}, -}; -use std::{convert::AsRef, path::Path}; -use storage_interface::{DbReader, StartupInfo}; -pub struct Aptossum { - db: AptosDB, -} - -impl Aptossum { - pub fn new + Clone>(db_root_path: P) -> Result { - let db = AptosDB::open( - db_root_path, - true, /* read only */ - NO_OP_STORAGE_PRUNER_CONFIG, /* no prune_window */ - RocksdbConfig::default(), - )?; - Ok(Aptossum { db }) - } - - pub fn get_startup_info(&self) -> Result { - self.db - .ledger_store - .get_startup_info()? - .ok_or_else(|| format_err!("DB is empty")) - } - - pub fn get_committed_version(&self) -> Result { - Ok(self - .db - .get_startup_info()? - .ok_or_else(|| format_err!("No committed ledger info found."))? - .latest_ledger_info - .ledger_info() - .version()) - } - - pub fn scan_txn_by_version( - &self, - from_version: Version, - to_version: Version, - ) -> Result> { - ensure!( - to_version >= from_version, - "'from' version {} > 'to' version {}", - from_version, - to_version - ); - let num_txns = to_version - from_version; - let txn_iter = self - .db - .transaction_store - .get_transaction_iter(from_version, num_txns as usize)?; - txn_iter.collect::>>() - } - - pub fn get_txn_by_version(&self, version: Version) -> Result { - self.db.transaction_store.get_transaction(version) - } - - pub fn get_state_value_by_version( - &self, - state_key: StateKey, - version: Version, - ) -> Result> { - self.db - .state_store - .get_value_with_proof_by_version(&state_key, version) - .map(|blob_and_proof| blob_and_proof.0) - } - - pub fn scan_events_by_seq( - &self, - key: &EventKey, - from_seq: u64, - to_seq: u64, - ) -> Result> { - ensure!( - to_seq >= from_seq, - "'from' sequence {} > 'to' sequence {}", - from_seq, - to_seq - ); - Ok((from_seq..to_seq) - .step_by(MAX_LIMIT as usize) - .map(|seq| self.db.get_events(key, seq, Order::Ascending, MAX_LIMIT)) - .collect::>>()? - .into_iter() - .flatten() - .collect::>()) - } - - pub fn get_events_by_version(&self, version: Version) -> Result> { - self.db.event_store.get_events_by_version(version) - } -} diff --git a/storage/aptosdb/src/lib.rs b/storage/aptosdb/src/lib.rs index 5f47f639d5ffd..cfcc22073b275 100644 --- a/storage/aptosdb/src/lib.rs +++ b/storage/aptosdb/src/lib.rs @@ -71,6 +71,7 @@ use aptos_types::{ state_proof::StateProof, state_store::{ state_key::StateKey, + state_key_prefix::StateKeyPrefix, state_value::{ StateKeyAndValue, StateValue, StateValueChunkWithProof, StateValueWithProof, }, @@ -677,6 +678,17 @@ impl DbReader for AptosDB { }) } + fn get_state_values_by_key_prefix( + &self, + key_prefix: &StateKeyPrefix, + version: Version, + ) -> Result> { + gauged_api("get_state_values_by_key_prefix", || { + self.state_store + .get_values_by_key_prefix(key_prefix, version) + }) + } + fn get_latest_ledger_info_option(&self) -> Result> { gauged_api("get_latest_ledger_info_option", || { Ok(self.ledger_store.get_latest_ledger_info_option()) @@ -984,7 +996,7 @@ impl DbReader for AptosDB { version: Version, ledger_version: Version, ) -> Result { - gauged_api("get_value_with_proof", || { + gauged_api("get_state_value_with_proof", || { ensure!( version <= ledger_version, "The queried version {} should be equal to or older than ledger version {}.", diff --git a/storage/aptosdb/src/pruner/state_store/test.rs b/storage/aptosdb/src/pruner/state_store/test.rs index bba4bbbcfe46b..30c60cd74dc4d 100644 --- a/storage/aptosdb/src/pruner/state_store/test.rs +++ b/storage/aptosdb/src/pruner/state_store/test.rs @@ -1,34 +1,28 @@ // Copyright (c) Aptos // SPDX-License-Identifier: Apache-2.0 -use crate::{change_set::ChangeSet, pruner::*, state_store::StateStore, AptosDB}; +use std::collections::HashMap; + use aptos_crypto::HashValue; use aptos_temppath::TempPath; -use aptos_types::{ - account_address::AccountAddress, - account_state_blob::AccountStateBlob, - state_store::{state_key::StateKey, state_value::StateValue}, -}; -use std::{collections::HashMap, convert::TryFrom}; - -fn put_account_state_set( +use aptos_types::state_store::{state_key::StateKey, state_value::StateValue}; + +use crate::{change_set::ChangeSet, pruner::*, state_store::StateStore, AptosDB}; + +fn put_value_set( db: &DB, state_store: &StateStore, - account_state_set: Vec<(AccountAddress, AccountStateBlob)>, + value_set: Vec<(StateKey, StateValue)>, version: Version, ) -> HashValue { let mut cs = ChangeSet::new(); - let value_state_set: HashMap<_, _> = account_state_set + let value_set: HashMap<_, _> = value_set .iter() - .map(|(address, blob)| { - ( - StateKey::AccountAddressKey(*address), - StateValue::from(blob.clone()), - ) - }) + .map(|(key, value)| (key.clone(), value.clone())) .collect(); + let root = state_store - .put_value_sets(vec![&value_state_set], None, version, &mut cs) + .put_value_sets(vec![&value_set], None, version, &mut cs) .unwrap()[0]; db.write_schemas(cs.batch).unwrap(); @@ -37,23 +31,21 @@ fn put_account_state_set( fn verify_state_in_store( state_store: &StateStore, - address: AccountAddress, - expected_value: Option<&AccountStateBlob>, + key: StateKey, + expected_value: Option<&StateValue>, version: Version, ) { let (value, _proof) = state_store - .get_value_with_proof_by_version(&StateKey::AccountAddressKey(address), version) + .get_value_with_proof_by_version(&key, version) .unwrap(); - assert_eq!( - &AccountStateBlob::try_from(value.unwrap()).unwrap(), - expected_value.unwrap() - ); + assert_eq!(value.as_ref(), expected_value); } #[test] fn test_state_store_pruner() { - let address = AccountAddress::new([1u8; AccountAddress::LENGTH]); + let key = StateKey::Raw(String::from("test_key1").into_bytes()); + let prune_batch_size = 10; let num_versions = 25; let tmp_dir = TempPath::new(); @@ -76,11 +68,11 @@ fn test_state_store_pruner() { let mut root_hashes = vec![]; // Insert 25 values in the db. for i in 0..num_versions { - let value = AccountStateBlob::from(vec![i as u8]); - root_hashes.push(put_account_state_set( + let value = StateValue::from(vec![i as u8]); + root_hashes.push(put_value_set( &db, state_store, - vec![(address, value.clone())], + vec![(key.clone(), value.clone())], i as u64, /* version */ )); } @@ -96,8 +88,8 @@ fn test_state_store_pruner() { for i in 0..num_versions { verify_state_in_store( state_store, - address, - Some(&AccountStateBlob::from(vec![i as u8])), + key.clone(), + Some(&StateValue::from(vec![i as u8])), i, ); } @@ -123,14 +115,14 @@ fn test_state_store_pruner() { .unwrap(); for i in 0..prune_batch_size { assert!(state_store - .get_value_with_proof_by_version(&StateKey::AccountAddressKey(address), i as u64) + .get_value_with_proof_by_version(&key, i as u64) .is_err()); } for i in prune_batch_size..num_versions as usize { verify_state_in_store( state_store, - address, - Some(&AccountStateBlob::from(vec![i as u8])), + key.clone(), + Some(&StateValue::from(vec![i as u8])), i as u64, ); } @@ -139,32 +131,33 @@ fn test_state_store_pruner() { #[test] fn test_worker_quit_eagerly() { - let address = AccountAddress::new([1u8; AccountAddress::LENGTH]); - let value0 = AccountStateBlob::from(vec![0x01]); - let value1 = AccountStateBlob::from(vec![0x02]); - let value2 = AccountStateBlob::from(vec![0x03]); + let key = StateKey::Raw(String::from("test_key1").into_bytes()); + + let value0 = StateValue::from(String::from("test_val1").into_bytes()); + let value1 = StateValue::from(String::from("test_val2").into_bytes()); + let value2 = StateValue::from(String::from("test_val3").into_bytes()); let tmp_dir = TempPath::new(); let aptos_db = AptosDB::new_for_test(&tmp_dir); let db = aptos_db.db; let state_store = &StateStore::new(Arc::clone(&db)); - let _root0 = put_account_state_set( + let _root0 = put_value_set( &db, state_store, - vec![(address, value0.clone())], + vec![(key.clone(), value0.clone())], 0, /* version */ ); - let _root1 = put_account_state_set( + let _root1 = put_value_set( &db, state_store, - vec![(address, value1.clone())], + vec![(key.clone(), value1.clone())], 1, /* version */ ); - let _root2 = put_account_state_set( + let _root2 = put_value_set( &db, state_store, - vec![(address, value2.clone())], + vec![(key.clone(), value2.clone())], 2, /* version */ ); @@ -192,8 +185,8 @@ fn test_worker_quit_eagerly() { command_sender.send(Command::Quit).unwrap(); // Worker quits immediately although `Command::Quit` is not the first command sent. worker.work(); - verify_state_in_store(state_store, address, Some(&value0), 0); - verify_state_in_store(state_store, address, Some(&value1), 1); - verify_state_in_store(state_store, address, Some(&value2), 2); + verify_state_in_store(state_store, key.clone(), Some(&value0), 0); + verify_state_in_store(state_store, key.clone(), Some(&value1), 1); + verify_state_in_store(state_store, key, Some(&value2), 2); } } diff --git a/storage/aptosdb/src/state_store/mod.rs b/storage/aptosdb/src/state_store/mod.rs index a83903612ae70..9c4a6bd56133b 100644 --- a/storage/aptosdb/src/state_store/mod.rs +++ b/storage/aptosdb/src/state_store/mod.rs @@ -15,37 +15,31 @@ use crate::{ state_value_index::StateValueIndexSchema, AptosDbError, }; -#[cfg(test)] -use anyhow::anyhow; -use anyhow::{ensure, Result}; +use anyhow::{anyhow, ensure, Result}; use aptos_crypto::{hash::CryptoHash, HashValue}; use aptos_jellyfish_merkle::{ iterator::JellyfishMerkleIterator, node_type::NodeKey, restore::JellyfishMerkleRestore, JellyfishMerkleTree, TreeReader, TreeWriter, }; -#[cfg(test)] -use aptos_types::state_store::state_key_prefix::StateKeyPrefix; use aptos_types::{ nibble::{nibble_path::NibblePath, ROOT_NIBBLE_HEIGHT}, proof::{SparseMerkleProof, SparseMerkleRangeProof}, state_store::{ state_key::StateKey, + state_key_prefix::StateKeyPrefix, state_value::{StateKeyAndValue, StateValue, StateValueChunkWithProof}, }, transaction::Version, }; use itertools::process_results; use schemadb::{SchemaBatch, DB}; -#[cfg(test)] -use std::cmp::Ordering; -use std::{collections::HashMap, sync::Arc}; +use std::{cmp::Ordering, collections::HashMap, sync::Arc}; use storage_interface::StateSnapshotReceiver; type LeafNode = aptos_jellyfish_merkle::node_type::LeafNode; type Node = aptos_jellyfish_merkle::node_type::Node; type NodeBatch = aptos_jellyfish_merkle::NodeBatch; -#[cfg(test)] pub const MAX_VALUES_TO_FETCH_FOR_KEY_PREFIX: usize = 10_000; #[derive(Debug)] @@ -72,7 +66,6 @@ impl StateStore { )) } - #[cfg(test)] fn get_node_keys_by_key_prefix( &self, key_prefix: &StateKeyPrefix, @@ -138,7 +131,6 @@ impl StateStore { /// Returns the key, value pairs for a particular state key prefix at at desired version. This /// API can be used to get all resources of an account by passing the account address as the /// key prefix. - #[cfg(test)] pub fn get_values_by_key_prefix( &self, key_prefix: &StateKeyPrefix, @@ -169,7 +161,6 @@ impl StateStore { } } - #[cfg(test)] fn get_value_by_node_key(&self, node_key: &NodeKey) -> Result> { if let Some(Node::Leaf(leaf)) = self.db.get::(node_key)? { Ok(Some(leaf.value().value.clone())) diff --git a/storage/aptosdb/src/state_store/state_store_test.rs b/storage/aptosdb/src/state_store/state_store_test.rs index 91bd92d4160a8..445d7b917c701 100644 --- a/storage/aptosdb/src/state_store/state_store_test.rs +++ b/storage/aptosdb/src/state_store/state_store_test.rs @@ -1,7 +1,7 @@ // Copyright (c) Aptos // SPDX-License-Identifier: Apache-2.0 -use std::{collections::HashSet, convert::TryFrom}; +use std::collections::HashSet; use proptest::{ collection::{hash_map, vec}, @@ -11,8 +11,7 @@ use proptest::{ use aptos_jellyfish_merkle::restore::JellyfishMerkleRestore; use aptos_temppath::TempPath; use aptos_types::{ - access_path::AccessPath, account_address::AccountAddress, account_state_blob::AccountStateBlob, - state_store::state_key::StateKeyTag, + access_path::AccessPath, account_address::AccountAddress, state_store::state_key::StateKeyTag, }; use storage_interface::StateSnapshotReceiver; @@ -20,47 +19,6 @@ use crate::{pruner, AptosDB}; use super::*; -fn put_account_state_set( - store: &StateStore, - account_state_set: Vec<(AccountAddress, AccountStateBlob)>, - version: Version, - expected_new_nodes: usize, - expected_stale_nodes: usize, - expected_stale_leaves: usize, -) -> HashValue { - let mut cs = ChangeSet::new(); - let expected_new_leaves = account_state_set.len(); - let value_set: HashMap<_, _> = account_state_set - .iter() - .map(|(address, blob)| { - ( - StateKey::AccountAddressKey(*address), - StateValue::from(blob.clone()), - ) - }) - .collect(); - let root = store - .put_value_sets(vec![&value_set], None, version, &mut cs) - .unwrap()[0]; - let bumps = cs.counter_bumps(version); - assert_eq!(bumps.get(LedgerCounter::NewStateNodes), expected_new_nodes); - assert_eq!( - bumps.get(LedgerCounter::StaleStateNodes), - expected_stale_nodes - ); - assert_eq!( - bumps.get(LedgerCounter::NewStateLeaves), - expected_new_leaves - ); - assert_eq!( - bumps.get(LedgerCounter::StaleStateLeaves), - expected_stale_leaves - ); - - store.db.write_schemas(cs.batch).unwrap(); - root -} - fn put_value_set( state_store: &StateStore, value_set: Vec<(StateKey, StateValue)>, @@ -96,56 +54,37 @@ fn prune_stale_indices( fn verify_value_and_proof( store: &StateStore, - address: AccountAddress, - expected_value: Option<&AccountStateBlob>, + key: StateKey, + expected_value: Option<&StateValue>, version: Version, root: HashValue, ) { - verify_value_and_proof_in_store(store, address, expected_value, version, root); - verify_value_index_in_store(store, address, expected_value, version); + verify_value_and_proof_in_store(store, key.clone(), expected_value, version, root); + verify_value_index_in_store(store, key, expected_value, version); } fn verify_value_and_proof_in_store( store: &StateStore, - address: AccountAddress, - expected_value: Option<&AccountStateBlob>, + key: StateKey, + expected_value: Option<&StateValue>, version: Version, root: HashValue, ) { let (value, proof) = store - .get_value_with_proof_by_version(&StateKey::AccountAddressKey(address), version) - .unwrap(); - assert_eq!( - value - .clone() - .map(|x| AccountStateBlob::try_from(x).unwrap()) - .as_ref(), - expected_value - ); - proof - .verify( - root, - StateKey::AccountAddressKey(address).hash(), - value.as_ref(), - ) + .get_value_with_proof_by_version(&key, version) .unwrap(); + assert_eq!(value.as_ref(), expected_value); + proof.verify(root, key.hash(), value.as_ref()).unwrap(); } fn verify_value_index_in_store( store: &StateStore, - address: AccountAddress, - expected_value: Option<&AccountStateBlob>, + key: StateKey, + expected_value: Option<&StateValue>, version: Version, ) { - let value = store - .get_value_by_version(&StateKey::AccountAddressKey(address), version) - .unwrap(); - assert_eq!( - value - .map(|x| AccountStateBlob::try_from(x).unwrap()) - .as_ref(), - expected_value - ); + let value = store.get_value_by_version(&key, version).unwrap(); + assert_eq!(value.as_ref(), expected_value); } #[test] @@ -153,10 +92,8 @@ fn test_empty_store() { let tmp_dir = TempPath::new(); let db = AptosDB::new_for_test(&tmp_dir); let store = &db.state_store; - let address = AccountAddress::new([1u8; AccountAddress::LENGTH]); - assert!(store - .get_value_with_proof_by_version(&StateKey::AccountAddressKey(address), 0) - .is_err()); + let key = StateKey::Raw(String::from("test_key").into_bytes()); + assert!(store.get_value_with_proof_by_version(&key, 0).is_err()); } #[test] @@ -164,47 +101,42 @@ fn test_state_store_reader_writer() { let tmp_dir = TempPath::new(); let db = AptosDB::new_for_test(&tmp_dir); let store = &db.state_store; - let address1 = AccountAddress::new([1u8; AccountAddress::LENGTH]); - let address2 = AccountAddress::new([2u8; AccountAddress::LENGTH]); - let address3 = AccountAddress::new([3u8; AccountAddress::LENGTH]); - let value1 = AccountStateBlob::from(vec![0x01]); - let value1_update = AccountStateBlob::from(vec![0x00]); - let value2 = AccountStateBlob::from(vec![0x02]); - let value3 = AccountStateBlob::from(vec![0x03]); + let key1 = StateKey::Raw(String::from("test_key1").into_bytes()); + let key2 = StateKey::Raw(String::from("test_key2").into_bytes()); + let key3 = StateKey::Raw(String::from("test_key3").into_bytes()); + + let value1 = StateValue::from(String::from("test_val1").into_bytes()); + let value1_update = StateValue::from(String::from("test_val1_update").into_bytes()); + let value2 = StateValue::from(String::from("test_val2").into_bytes()); + let value3 = StateValue::from(String::from("test_val3").into_bytes()); // Insert address1 with value 1 and verify new states. - let mut root = put_account_state_set( + let mut root = put_value_set( store, - vec![(address1, value1.clone())], + vec![(key1.clone(), value1.clone())], 0, /* version */ - 1, /* expected_nodes_created */ - 0, /* expected_nodes_retired */ - 0, /* expected_blobs_retired */ ); - verify_value_and_proof(store, address1, Some(&value1), 0, root); + verify_value_and_proof(store, key1.clone(), Some(&value1), 0, root); - verify_value_and_proof(store, address2, None, 0, root); - verify_value_and_proof(store, address3, None, 0, root); + verify_value_and_proof(store, key2.clone(), None, 0, root); + verify_value_and_proof(store, key3.clone(), None, 0, root); // Insert address 1 with updated value1, address2 with value 2 and address3 with value3 and // verify new states. - root = put_account_state_set( + root = put_value_set( store, vec![ - (address1, value1_update.clone()), - (address2, value2.clone()), - (address3, value3.clone()), + (key1.clone(), value1_update.clone()), + (key2.clone(), value2.clone()), + (key3.clone(), value3.clone()), ], 1, /* version */ - 4, /* expected_nodes_created */ - 1, /* expected_nodes_retired */ - 1, /* expected_blobs_retired */ ); - verify_value_and_proof(store, address1, Some(&value1_update), 1, root); - verify_value_and_proof(store, address2, Some(&value2), 1, root); - verify_value_and_proof(store, address3, Some(&value3), 1, root); + verify_value_and_proof(store, key1, Some(&value1_update), 1, root); + verify_value_and_proof(store, key2, Some(&value2), 1, root); + verify_value_and_proof(store, key3, Some(&value3), 1, root); } #[test] @@ -298,14 +230,15 @@ fn test_get_values_by_key_prefix() { #[test] fn test_retired_records() { - let address1 = AccountAddress::new([1u8; AccountAddress::LENGTH]); - let address2 = AccountAddress::new([2u8; AccountAddress::LENGTH]); - let address3 = AccountAddress::new([3u8; AccountAddress::LENGTH]); - let value1 = AccountStateBlob::from(vec![0x01]); - let value2 = AccountStateBlob::from(vec![0x02]); - let value2_update = AccountStateBlob::from(vec![0x12]); - let value3 = AccountStateBlob::from(vec![0x03]); - let value3_update = AccountStateBlob::from(vec![0x13]); + let key1 = StateKey::Raw(String::from("test_key1").into_bytes()); + let key2 = StateKey::Raw(String::from("test_key2").into_bytes()); + let key3 = StateKey::Raw(String::from("test_key3").into_bytes()); + + let value1 = StateValue::from(String::from("test_val1").into_bytes()); + let value2 = StateValue::from(String::from("test_val2").into_bytes()); + let value2_update = StateValue::from(String::from("test_val2_update").into_bytes()); + let value3 = StateValue::from(String::from("test_val3").into_bytes()); + let value3_update = StateValue::from(String::from("test_val3_update").into_bytes()); let tmp_dir = TempPath::new(); let db = AptosDB::new_for_test(&tmp_dir); @@ -318,32 +251,23 @@ fn test_retired_records() { // | address2 | value2 | value2_update | | // | address3 | | value3 | value3_update | // ``` - let root0 = put_account_state_set( + let root0 = put_value_set( store, - vec![(address1, value1.clone()), (address2, value2)], + vec![(key1.clone(), value1.clone()), (key2.clone(), value2)], 0, /* version */ - 3, /* expected_nodes_created */ - 0, /* expected_nodes_retired */ - 0, /* expected_blobs_retired */ ); - let root1 = put_account_state_set( + let root1 = put_value_set( store, vec![ - (address2, value2_update.clone()), - (address3, value3.clone()), + (key2.clone(), value2_update.clone()), + (key3.clone(), value3.clone()), ], 1, /* version */ - 3, /* expected_nodes_created */ - 2, /* expected_nodes_retired */ - 1, /* expected_blobs_retired */ ); - let root2 = put_account_state_set( + let root2 = put_value_set( store, - vec![(address3, value3_update.clone())], + vec![(key3.clone(), value3_update.clone())], 2, /* version */ - 2, /* expected_nodes_created */ - 2, /* expected_nodes_retired */ - 1, /* expected_blobs_retired */ ); // Verify. @@ -354,7 +278,7 @@ fn test_retired_records() { 1, /* target_least_readable_version */ 0, /* limit */ ); - verify_value_and_proof(store, address1, Some(&value1), 0, root0); + verify_value_and_proof(store, key1.clone(), Some(&value1), 0, root0); } // Prune till version=1. { @@ -364,13 +288,11 @@ fn test_retired_records() { 100, /* limit */ ); // root0 is gone. - assert!(store - .get_value_with_proof_by_version(&StateKey::AccountAddressKey(address2), 0) - .is_err()); + assert!(store.get_value_with_proof_by_version(&key2, 0).is_err()); // root1 is still there. - verify_value_and_proof(store, address1, Some(&value1), 1, root1); - verify_value_and_proof(store, address2, Some(&value2_update), 1, root1); - verify_value_and_proof(store, address3, Some(&value3), 1, root1); + verify_value_and_proof(store, key1.clone(), Some(&value1), 1, root1); + verify_value_and_proof(store, key2.clone(), Some(&value2_update), 1, root1); + verify_value_and_proof(store, key3.clone(), Some(&value3), 1, root1); } // Prune till version=2. { @@ -380,13 +302,11 @@ fn test_retired_records() { 100, /* limit */ ); // root1 is gone. - assert!(store - .get_value_with_proof_by_version(&StateKey::AccountAddressKey(address2), 1) - .is_err()); + assert!(store.get_value_with_proof_by_version(&key2, 1).is_err()); // root2 is still there. - verify_value_and_proof(store, address1, Some(&value1), 2, root2); - verify_value_and_proof(store, address2, Some(&value2_update), 2, root2); - verify_value_and_proof(store, address3, Some(&value3_update), 2, root2); + verify_value_and_proof(store, key1, Some(&value1), 2, root2); + verify_value_and_proof(store, key2, Some(&value2_update), 2, root2); + verify_value_and_proof(store, key3, Some(&value3_update), 2, root2); } } diff --git a/storage/scratchpad/src/sparse_merkle/mod.rs b/storage/scratchpad/src/sparse_merkle/mod.rs index da91f3967046e..2f1a880c41644 100644 --- a/storage/scratchpad/src/sparse_merkle/mod.rs +++ b/storage/scratchpad/src/sparse_merkle/mod.rs @@ -451,16 +451,16 @@ where let mut result = Vec::with_capacity(update_batch.len()); for updates in update_batch { // sort and dedup the accounts - let accounts = updates + let keys = updates .iter() - .map(|(account, _)| *account) + .map(|(key, _)| *key) .collect::>() .into_iter() .collect::>(); current_state_tree = current_state_tree.batch_update(updates, proof_reader)?; result.push(( current_state_tree.smt.root_hash(), - current_state_tree.generate_node_hashes(accounts), + current_state_tree.generate_node_hashes(keys), )); } Ok((result, current_state_tree)) diff --git a/storage/state-view/Cargo.toml b/storage/state-view/Cargo.toml index 87644cc683907..e628f4b9dd19a 100644 --- a/storage/state-view/Cargo.toml +++ b/storage/state-view/Cargo.toml @@ -12,9 +12,16 @@ edition = "2018" [dependencies] anyhow = "1.0.52" aptos-crypto = { path = "../../crates/aptos-crypto" } + aptos-types = { path = "../../types" } aptos-workspace-hack = { version = "0.1", path = "../../crates/aptos-workspace-hack" } +serde = { version = "1.0.124", default-features = false } +serde_json = "1.0.64" +serde_bytes = "0.11.5" +bcs = "0.1.2" +move-core-types = { git = "https://github.com/move-language/move", rev = "1b6b7513dcc1a5c866f178ca5c1e74beb2ce181e", version = "0.0.4", features=["address32"] } + [features] default = [] fuzzing = ["aptos-types/fuzzing"] diff --git a/storage/state-view/src/account_with_state_cache.rs b/storage/state-view/src/account_with_state_cache.rs new file mode 100644 index 0000000000000..6b9d29d9bc02c --- /dev/null +++ b/storage/state-view/src/account_with_state_cache.rs @@ -0,0 +1,54 @@ +// Copyright (c) Aptos +// SPDX-License-Identifier: Apache-2.0 +use aptos_types::{ + account_view::AccountView, + state_store::{state_key::StateKey, state_value::StateValue}, +}; +use move_core_types::account_address::AccountAddress; +use std::collections::HashMap; + +pub struct AccountWithStateCache<'a> { + account_address: &'a AccountAddress, + state_cache: &'a HashMap, +} + +impl<'a> AccountWithStateCache<'a> { + pub fn new( + account_address: &'a AccountAddress, + state_cache: &'a HashMap, + ) -> Self { + Self { + account_address, + state_cache, + } + } +} + +impl<'a> AccountView for AccountWithStateCache<'a> { + fn get_state_value(&self, state_key: &StateKey) -> anyhow::Result>> { + Ok(self + .state_cache + .get(state_key) + .and_then(|x| x.maybe_bytes.clone())) + } + + fn get_account_address(&self) -> &AccountAddress { + self.account_address + } +} + +pub trait AsAccountWithStateCache<'a> { + fn as_account_with_state_cache( + &'a self, + account_address: &'a AccountAddress, + ) -> AccountWithStateCache; +} + +impl<'a> AsAccountWithStateCache<'a> for HashMap { + fn as_account_with_state_cache( + &'a self, + account_address: &'a AccountAddress, + ) -> AccountWithStateCache { + AccountWithStateCache::new(account_address, self) + } +} diff --git a/storage/state-view/src/account_with_state_view.rs b/storage/state-view/src/account_with_state_view.rs new file mode 100644 index 0000000000000..260a265bc0545 --- /dev/null +++ b/storage/state-view/src/account_with_state_view.rs @@ -0,0 +1,36 @@ +// Copyright (c) Aptos +// SPDX-License-Identifier: Apache-2.0 +use crate::StateView; +use aptos_types::{account_view::AccountView, state_store::state_key::StateKey}; +use move_core_types::account_address::AccountAddress; + +pub struct AccountWithStateView<'a> { + account_address: &'a AccountAddress, + state_view: &'a dyn StateView, +} + +impl<'a> AccountWithStateView<'a> { + pub fn new(account_address: &'a AccountAddress, state_view: &'a dyn StateView) -> Self { + Self { + account_address, + state_view, + } + } +} + +impl<'a> AccountView for AccountWithStateView<'a> { + fn get_state_value(&self, state_key: &StateKey) -> anyhow::Result>> { + self.state_view.get_state_value(state_key) + } + + fn get_account_address(&self) -> &AccountAddress { + self.account_address + } +} + +pub trait AsAccountWithStateView<'a> { + fn as_account_with_state_view( + &'a self, + account_address: &'a AccountAddress, + ) -> AccountWithStateView; +} diff --git a/storage/state-view/src/lib.rs b/storage/state-view/src/lib.rs index f446f4732ff89..09268458085dd 100644 --- a/storage/state-view/src/lib.rs +++ b/storage/state-view/src/lib.rs @@ -5,11 +5,16 @@ //! This crate defines [`trait StateView`](StateView). +use crate::account_with_state_view::{AccountWithStateView, AsAccountWithStateView}; use anyhow::Result; use aptos_crypto::HashValue; use aptos_types::{state_store::state_key::StateKey, transaction::Version}; +use move_core_types::account_address::AccountAddress; use std::ops::Deref; +pub mod account_with_state_cache; +pub mod account_with_state_view; + /// `StateView` is a trait that defines a read-only snapshot of the global state. It is passed to /// the VM for transaction execution, during which the VM is guaranteed to read anything at the /// given state. @@ -56,3 +61,12 @@ where self.deref().is_genesis() } } + +impl<'a, S: 'a + StateView> AsAccountWithStateView<'a> for S { + fn as_account_with_state_view( + &'a self, + account_address: &'a AccountAddress, + ) -> AccountWithStateView { + AccountWithStateView::new(account_address, self) + } +} diff --git a/storage/storage-interface/src/lib.rs b/storage/storage-interface/src/lib.rs index 7e5ac78bd789d..adf7b844d998c 100644 --- a/storage/storage-interface/src/lib.rs +++ b/storage/storage-interface/src/lib.rs @@ -1,20 +1,19 @@ // Copyright (c) Aptos // SPDX-License-Identifier: Apache-2.0 -use anyhow::{format_err, Result}; +use anyhow::{anyhow, format_err, Result}; use aptos_crypto::{hash::SPARSE_MERKLE_PLACEHOLDER_HASH, HashValue}; use aptos_types::{ access_path::AccessPath, account_address::AccountAddress, account_config::aptos_root_address, - account_state::AccountState, contract_event::{ContractEvent, EventByVersionWithProof, EventWithProof}, epoch_change::EpochChangeProof, epoch_state::EpochState, event::EventKey, ledger_info::LedgerInfoWithSignatures, move_resource::MoveStorage, - on_chain_config::{access_path_for_config, dpn_access_path_for_config, ConfigID}, + on_chain_config::{access_path_for_config, ConfigID}, proof::{ definition::LeafCount, AccumulatorConsistencyProof, SparseMerkleProof, SparseMerkleRangeProof, TransactionAccumulatorSummary, @@ -22,6 +21,7 @@ use aptos_types::{ state_proof::StateProof, state_store::{ state_key::StateKey, + state_key_prefix::StateKeyPrefix, state_value::{ StateKeyAndValue, StateValue, StateValueChunkWithProof, StateValueWithProof, }, @@ -32,7 +32,7 @@ use aptos_types::{ }, }; use serde::{Deserialize, Serialize}; -use std::{convert::TryFrom, sync::Arc}; +use std::{collections::HashMap, sync::Arc}; use thiserror::Error; #[cfg(any(feature = "testing", feature = "fuzzing"))] @@ -324,6 +324,17 @@ pub trait DbReader: Send + Sync { unimplemented!() } + /// Returns the key, value pairs for a particular state key prefix at at desired version. This + /// API can be used to get all resources of an account by passing the account address as the + /// key prefix. + fn get_state_values_by_key_prefix( + &self, + key_prefix: &StateKeyPrefix, + version: Version, + ) -> Result> { + unimplemented!() + } + /// Returns the latest ledger info, if any. fn get_latest_ledger_info_option(&self) -> Result> { unimplemented!() @@ -525,48 +536,28 @@ impl MoveStorage for &dyn DbReader { access_path: AccessPath, version: Version, ) -> Result> { - let (state_value, _) = self.get_state_value_with_proof_by_version( - &StateKey::AccountAddressKey(access_path.address), - version, - )?; - let account_state = - AccountState::try_from(&state_value.ok_or_else(|| { - format_err!("missing blob in account state/account does not exist") - })?)?; + let (state_value, _) = self + .get_state_value_with_proof_by_version(&StateKey::AccessPath(access_path), version)?; - Ok(account_state - .get(&access_path.path) - .ok_or_else(|| format_err!("no value found in account state"))? - .clone()) + state_value + .ok_or_else(|| format_err!("no value found in DB"))? + .maybe_bytes + .ok_or_else(|| format_err!("no value found in DB")) } fn fetch_config_by_version(&self, config_id: ConfigID, version: Version) -> Result> { - let aptos_root_state = AccountState::try_from( - &self - .get_state_value_with_proof_by_version( - &StateKey::AccountAddressKey(aptos_root_address()), - version, - )? - .0 - .ok_or_else(|| { - format_err!("missing blob in account state/account does not exist") - })?, - )?; - - match aptos_root_state.get(&access_path_for_config(config_id).path) { - Some(config) => Ok(config.to_vec()), - _ => aptos_root_state - .get(&dpn_access_path_for_config(config_id).path) - .map_or_else( - || { - Err(format_err!( - "no config {} found in aptos root account state", - config_id - )) - }, - |bytes| Ok(bytes.to_vec()), - ), - } + let config_value_option = self + .get_state_value_with_proof_by_version( + &StateKey::AccessPath(AccessPath::new( + aptos_root_address(), + access_path_for_config(config_id).path, + )), + version, + )? + .0; + config_value_option + .and_then(|x| x.maybe_bytes) + .ok_or_else(|| anyhow!("no config {} found in aptos root account state", config_id)) } fn fetch_synced_version(&self) -> Result { diff --git a/storage/storage-interface/src/mock.rs b/storage/storage-interface/src/mock.rs index b58ed01c6b014..4a42863b41ed7 100644 --- a/storage/storage-interface/src/mock.rs +++ b/storage/storage-interface/src/mock.rs @@ -4,27 +4,53 @@ //! This module provides mock dbreader for tests. use crate::{DbReader, DbWriter}; -use anyhow::Result; +use anyhow::{anyhow, Result}; use aptos_types::{ account_address::AccountAddress, account_config::AccountResource, account_state::AccountState, - account_state_blob::AccountStateBlob, + proof::SparseMerkleProof, state_store::{state_key::StateKey, state_value::StateValue}, + transaction::Version, }; use move_core_types::move_resource::MoveResource; -use std::convert::TryFrom; /// This is a mock of the DbReaderWriter in tests. pub struct MockDbReaderWriter; impl DbReader for MockDbReaderWriter { - fn get_latest_state_value(&self, _resource_key: StateKey) -> Result> { - Ok(Some(get_mock_account_state_blob())) + fn get_latest_state_value(&self, state_key: StateKey) -> Result> { + match state_key { + StateKey::AccessPath(access_path) => { + let account_state = get_mock_account_state(); + Ok(account_state + .get(&access_path.path) + .cloned() + .map(StateValue::from)) + } + _ => Err(anyhow!("Not supported state key type {:?}", state_key)), + } + } + + fn get_latest_version_option(&self) -> Result> { + // return a dummy version for tests + Ok(Some(1)) + } + + fn get_state_value_with_proof_by_version( + &self, + state_key: &StateKey, + _: Version, + ) -> Result<(Option, SparseMerkleProof)> { + // dummy proof which is not used + Ok(( + self.get_latest_state_value(state_key.clone()).unwrap(), + SparseMerkleProof::new(None, vec![]), + )) } } -fn get_mock_account_state_blob() -> StateValue { +fn get_mock_account_state() -> AccountState { let account_resource = AccountResource::new(0, vec![], AccountAddress::random()); let mut account_state = AccountState::default(); @@ -32,8 +58,7 @@ fn get_mock_account_state_blob() -> StateValue { AccountResource::resource_path(), bcs::to_bytes(&account_resource).unwrap(), ); - - StateValue::from(AccountStateBlob::try_from(&account_state).unwrap()) + account_state } impl DbWriter for MockDbReaderWriter {} diff --git a/storage/storage-interface/src/state_view.rs b/storage/storage-interface/src/state_view.rs index e2e4a5bdefb79..04eddc718293c 100644 --- a/storage/storage-interface/src/state_view.rs +++ b/storage/storage-interface/src/state_view.rs @@ -2,12 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 use crate::DbReader; -use anyhow::{ensure, Result}; +use anyhow::Result; use aptos_state_view::StateView; -use aptos_types::{ - account_state::AccountState, state_store::state_key::StateKey, transaction::Version, -}; -use std::{convert::TryFrom, sync::Arc}; +use aptos_types::{state_store::state_key::StateKey, transaction::Version}; +use std::sync::Arc; pub struct DbStateView { db: Arc, @@ -31,18 +29,7 @@ impl DbStateView { impl StateView for DbStateView { fn get_state_value(&self, state_key: &StateKey) -> Result>> { - match state_key { - // Deal with the account state blob. - StateKey::AccessPath(path) => { - let blob_opt = self.get(&StateKey::AccountAddressKey(path.address))?; - if let Some(blob) = blob_opt { - Ok(AccountState::try_from(&blob)?.get(&path.path).cloned()) - } else { - Ok(None) - } - } - _ => self.get(state_key), - } + self.get(state_key) } fn is_genesis(&self) -> bool { @@ -69,14 +56,6 @@ pub trait DbStateViewAtVersion { impl DbStateViewAtVersion for Arc { fn state_view_at_version(&self, version: Option) -> Result { - if let Some(some_version) = version { - let ledger_version = self.get_latest_version()?; - ensure!( - some_version <= ledger_version, - "Asking for state view newer than ledger version." - ); - } - Ok(DbStateView { db: self.clone(), version, diff --git a/storage/storage-interface/src/verified_state_view.rs b/storage/storage-interface/src/verified_state_view.rs index 1e8c7692a5afe..543c6e30713ba 100644 --- a/storage/storage-interface/src/verified_state_view.rs +++ b/storage/storage-interface/src/verified_state_view.rs @@ -9,21 +9,13 @@ use aptos_crypto::{ }; use aptos_state_view::{StateView, StateViewId}; use aptos_types::{ - access_path::AccessPath, - account_state::AccountState, - account_state_blob::AccountStateBlob, proof::SparseMerkleProof, state_store::{state_key::StateKey, state_value::StateValue}, transaction::{Version, PRE_GENESIS_VERSION}, }; -use move_core_types::account_address::AccountAddress; use parking_lot::RwLock; use scratchpad::{FrozenSparseMerkleTree, SparseMerkleTree, StateStoreStatus}; -use std::{ - collections::{hash_map::Entry, HashMap}, - convert::{TryFrom, TryInto}, - sync::Arc, -}; +use std::{collections::HashMap, sync::Arc}; /// `VerifiedStateView` is like a snapshot of the global state comprised of state view at two /// levels, persistent storage and memory. @@ -69,18 +61,17 @@ pub struct VerifiedStateView { /// | | /// +---------------------------+---------------------+-------+ /// | +-------------------------+---------------------+-----+ | - /// | | state_cache, account_to_proof_cache | | + /// | | state_cache, state_key_to_proof_cache | | /// | +---------------^---------------------------^---------+ | /// | | | | - /// | state store values only account state blob | - /// | | proof | + /// | state store values only state blob proof | + /// | | | | /// | | | | /// | +---------------+--------------+ +----------+---------+ | /// | | speculative_state | | reader | | /// | +------------------------------+ +--------------------+ | /// +---------------------------------------------------------+ /// ``` - account_state_cache: RwLock>, /// Cache of state key to state value, which is used in case of fine grained storage object. /// Eventually this should replace the `account_to_state_cache` as we deprecate account state blob /// completely and migrate to fine grained storage. A value of None in this cache reflects that @@ -116,7 +107,6 @@ impl VerifiedStateView { latest_persistent_version, latest_persistent_state_root, speculative_state: speculative_state.freeze(), - account_state_cache: RwLock::new(HashMap::new()), state_cache: RwLock::new(HashMap::new()), state_proof_cache: RwLock::new(HashMap::new()), } @@ -125,42 +115,11 @@ impl VerifiedStateView { pub fn into_state_cache(self) -> StateCache { StateCache { frozen_base: self.speculative_state, - accounts: self.account_state_cache.into_inner(), state_cache: self.state_cache.into_inner(), proofs: self.state_proof_cache.into_inner(), } } - fn get_by_access_path(&self, access_path: &AccessPath) -> Result>> { - let address = access_path.address; - let path = &access_path.path; - - // Lock for read first: - if let Some(contents) = self.account_state_cache.read().get(&address) { - return Ok(contents.get(path).cloned()); - } - - let state_value_option = - self.get_state_value_internal(&StateKey::AccountAddressKey(address))?; - - // Hack: Convert the state store value to account blob option as that is the - // only type of state value we support for now. This needs to change once we start - // supporting tables and other fine grained resources. - let new_account_blob = state_value_option - .map(AccountStateBlob::try_from) - .transpose()? - .as_ref() - .map(TryInto::try_into) - .transpose()? - .unwrap_or_default(); - - // Now enter the locked region, and write if still empty. - match self.account_state_cache.write().entry(address) { - Entry::Occupied(occupied) => Ok(occupied.get().get(path).cloned()), - Entry::Vacant(vacant) => Ok(vacant.insert(new_account_blob).get(path).cloned()), - } - } - fn get_state_value_internal(&self, state_key: &StateKey) -> Result> { // Do most of the work outside the write lock. let key_hash = state_key.hash(); @@ -200,27 +159,10 @@ impl VerifiedStateView { Ok(state_value_option) } - - fn get_and_cache_state_value(&self, state_key: &StateKey) -> Result>> { - // First check if the cache has the state value. - if let Some(contents) = self.state_cache.read().get(state_key) { - // This can return None, which means the value has been deleted from the DB. - return Ok(contents.maybe_bytes.as_ref().cloned()); - } - let state_value_option = self.get_state_value_internal(state_key)?; - // Update the cache if still empty - let mut cache = self.state_cache.write(); - let new_value = cache - .entry(state_key.clone()) - .or_insert_with(|| state_value_option.unwrap_or_default()); - - Ok(new_value.maybe_bytes.as_ref().cloned()) - } } pub struct StateCache { pub frozen_base: FrozenSparseMerkleTree, - pub accounts: HashMap, pub state_cache: HashMap, pub proofs: HashMap>, } @@ -231,12 +173,18 @@ impl StateView for VerifiedStateView { } fn get_state_value(&self, state_key: &StateKey) -> Result>> { - // This is a hack to temporary support of legacy account address based access path. This should - // be removed once we migrate to fine grained storage for all account resource. - match state_key { - StateKey::AccessPath(access_path) => self.get_by_access_path(access_path), - _ => self.get_and_cache_state_value(state_key), + // First check if the cache has the state value. + if let Some(contents) = self.state_cache.read().get(state_key) { + // This can return None, which means the value has been deleted from the DB. + return Ok(contents.maybe_bytes.as_ref().cloned()); } + let state_value_option = self.get_state_value_internal(state_key)?; + // Update the cache if still empty + let mut cache = self.state_cache.write(); + let new_value = cache + .entry(state_key.clone()) + .or_insert_with(|| state_value_option.unwrap_or_default()); + Ok(new_value.maybe_bytes.as_ref().cloned()) } fn is_genesis(&self) -> bool { diff --git a/testsuite/generate-format/tests/staged/aptos.yaml b/testsuite/generate-format/tests/staged/aptos.yaml index d840f9be33924..cf5a7c619221d 100644 --- a/testsuite/generate-format/tests/staged/aptos.yaml +++ b/testsuite/generate-format/tests/staged/aptos.yaml @@ -128,19 +128,15 @@ SignedTransaction: StateKey: ENUM: 0: - AccountAddressKey: - NEWTYPE: - TYPENAME: AccountAddress - 1: AccessPath: NEWTYPE: TYPENAME: AccessPath - 2: + 1: TableItem: STRUCT: - handle: U128 - key: BYTES - 3: + 2: Raw: NEWTYPE: BYTES StructTag: diff --git a/testsuite/generate-format/tests/staged/consensus.yaml b/testsuite/generate-format/tests/staged/consensus.yaml index 37138c8461d17..660965e47016d 100644 --- a/testsuite/generate-format/tests/staged/consensus.yaml +++ b/testsuite/generate-format/tests/staged/consensus.yaml @@ -295,19 +295,15 @@ SignedTransaction: StateKey: ENUM: 0: - AccountAddressKey: - NEWTYPE: - TYPENAME: AccountAddress - 1: AccessPath: NEWTYPE: TYPENAME: AccessPath - 2: + 1: TableItem: STRUCT: - handle: U128 - key: BYTES - 3: + 2: Raw: NEWTYPE: BYTES StructTag: diff --git a/testsuite/smoke-test/src/state_sync_v2.rs b/testsuite/smoke-test/src/state_sync_v2.rs index a08b5f04cb45e..87c3e64ef8201 100644 --- a/testsuite/smoke-test/src/state_sync_v2.rs +++ b/testsuite/smoke-test/src/state_sync_v2.rs @@ -6,6 +6,7 @@ use crate::{ test_utils::{create_and_fund_account, transfer_and_reconfig, transfer_coins}, }; use aptos_config::config::{BootstrappingMode, ContinuousSyncingMode, NodeConfig}; +use aptos_logger::info; use aptos_rest_client::Client as RestClient; use aptos_sdk::types::LocalAccount; use aptos_types::{account_address::AccountAddress, PeerId}; @@ -491,6 +492,11 @@ fn stop_validator_and_delete_storage(swarm: &mut LocalSwarm, validator: AccountA // Delete the validator storage let node_config = swarm.validator_mut(validator).unwrap().config().clone(); let state_db_path = node_config.storage.dir().join("aptosdb"); + info!( + "Deleting state db path {:?} for validator {:?}", + state_db_path.as_path(), + validator + ); assert!(state_db_path.as_path().exists()); fs::remove_dir_all(state_db_path).unwrap(); } diff --git a/testsuite/smoke-test/src/storage.rs b/testsuite/smoke-test/src/storage.rs index fc2d76525229a..4648a6d0f50b6 100644 --- a/testsuite/smoke-test/src/storage.rs +++ b/testsuite/smoke-test/src/storage.rs @@ -110,6 +110,7 @@ async fn test_db_restore() { 20, ) .await; + assert_balance(&client_1, &account_0, expected_balance_0).await; assert_balance(&client_1, &account_1, expected_balance_1).await; diff --git a/types/src/account_state.rs b/types/src/account_state.rs index d09758915e61e..2aa42c6d366d5 100644 --- a/types/src/account_state.rs +++ b/types/src/account_state.rs @@ -4,21 +4,20 @@ use crate::{ access_path::Path, account_address::AccountAddress, - account_config::{AccountResource, BalanceResource, CRSNResource, ChainIdResource}, + account_config::{AccountResource, BalanceResource}, account_state_blob::AccountStateBlob, - block_metadata::BlockResource, - on_chain_config::{ - access_path_for_config, dpn_access_path_for_config, ConfigurationResource, OnChainConfig, - VMPublishingOption, ValidatorSet, Version, - }, - state_store::state_value::StateValue, - timestamp::TimestampResource, + on_chain_config::{access_path_for_config, OnChainConfig, ValidatorSet}, + state_store::{state_key::StateKey, state_value::StateValue}, validator_config::{ValidatorConfig, ValidatorOperatorConfigResource}, }; -use anyhow::{format_err, Error, Result}; +use anyhow::{anyhow, Error, Result}; use move_core_types::{language_storage::StructTag, move_resource::MoveResource}; use serde::{de::DeserializeOwned, Deserialize, Serialize}; -use std::{collections::btree_map::BTreeMap, convert::TryFrom, fmt}; +use std::{ + collections::{btree_map::BTreeMap, HashMap}, + convert::TryFrom, + fmt, +}; #[derive(Clone, Default, Deserialize, PartialEq, Serialize)] pub struct AccountState(BTreeMap, Vec>); @@ -40,26 +39,6 @@ impl AccountState { } } - pub fn get_crsn_resource(&self) -> Result> { - self.get_resource::() - } - - pub fn get_balance_resources(&self) -> Result> { - self.get_resource::() - } - - pub fn get_chain_id_resource(&self) -> Result> { - self.get_resource::() - } - - pub fn get_configuration_resource(&self) -> Result> { - self.get_resource::() - } - - pub fn get_timestamp_resource(&self) -> Result> { - self.get_resource::() - } - pub fn get_validator_config_resource(&self) -> Result> { self.get_resource::() } @@ -74,22 +53,6 @@ impl AccountState { self.get_config::() } - pub fn get_version(&self) -> Result> { - self.get_config::() - } - - pub fn get_vm_publishing_option(&self) -> Result> { - self.0 - .get(&dpn_access_path_for_config(VMPublishingOption::CONFIG_ID).path) - .map(|bytes| VMPublishingOption::deserialize_into_config(bytes)) - .transpose() - .map_err(Into::into) - } - - pub fn get_block_resource(&self) -> Result> { - self.get_resource::() - } - pub fn get(&self, key: &[u8]) -> Option<&Vec> { self.0.get(key) } @@ -115,10 +78,7 @@ impl AccountState { } pub fn get_config(&self) -> Result> { - match self.get_resource_impl(&access_path_for_config(T::CONFIG_ID).path)? { - Some(config) => Ok(Some(config)), - _ => self.get_resource_impl(&dpn_access_path_for_config(T::CONFIG_ID).path), - } + self.get_resource_impl(&access_path_for_config(T::CONFIG_ID).path) } pub fn get_resource(&self) -> Result> { @@ -156,28 +116,13 @@ impl AccountState { }) } - /// Given a particular `MoveResource`, return an iterator with all instances - /// of that resource (there may be multiple with different generic type parameters). - pub fn get_resources_with_type( - &self, - ) -> impl Iterator> + '_ { - self.get_resources().filter_map(|(struct_tag, bytes)| { - let matches_resource = struct_tag.address == T::ADDRESS - && struct_tag.module.as_ref() == T::MODULE_NAME - && struct_tag.name.as_ref() == T::STRUCT_NAME; - if matches_resource { - match bcs::from_bytes::(bytes) { - Ok(resource) => Some(Ok((struct_tag, resource))), - Err(err) => Some(Err(format_err!( - "failed to deserialize resource: '{}', error: {:?}", - struct_tag, - err - ))), - } - } else { - None - } - }) + pub fn from_access_paths_and_values( + key_value_map: &HashMap, + ) -> Result> { + if key_value_map.is_empty() { + return Ok(None); + } + Some(Self::try_from(key_value_map)).transpose() } } @@ -189,30 +134,12 @@ impl fmt::Debug for AccountState { .map(|account_resource_opt| format!("{:#?}", account_resource_opt)) .unwrap_or_else(|e| format!("parse error: {:#?}", e)); - let timestamp_str = self - .get_timestamp_resource() - .map(|timestamp_opt| format!("{:#?}", timestamp_opt)) - .unwrap_or_else(|e| format!("parse: {:#?}", e)); - - let validator_config_str = self - .get_validator_config_resource() - .map(|validator_config_opt| format!("{:#?}", validator_config_opt)) - .unwrap_or_else(|e| format!("parse error: {:#?}", e)); - - let validator_set_str = self - .get_validator_set() - .map(|validator_set_opt| format!("{:#?}", validator_set_opt)) - .unwrap_or_else(|e| format!("parse error: {:#?}", e)); - write!( f, "{{ \n \ AccountResource {{ {} }} \n \ - Timestamp {{ {} }} \n \ - ValidatorConfig {{ {} }} \n \ - ValidatorSet {{ {} }} \n \ }}", - account_resource_str, timestamp_str, validator_config_str, validator_set_str, + account_resource_str, ) } } @@ -224,7 +151,7 @@ impl TryFrom<&StateValue> for AccountState { let bytes = state_value .maybe_bytes .as_ref() - .ok_or_else(|| format_err!("Empty state value passed"))?; + .ok_or_else(|| anyhow!("Empty state value passed"))?; AccountState::try_from(bytes).map_err(Into::into) } @@ -265,3 +192,22 @@ impl TryFrom<(&AccountResource, &BalanceResource)> for AccountState { Ok(Self(btree_map)) } } + +impl TryFrom<&HashMap> for AccountState { + type Error = Error; + + fn try_from(key_value_map: &HashMap) -> Result { + let mut btree_map: BTreeMap, Vec> = BTreeMap::new(); + for (key, value) in key_value_map { + match key { + StateKey::AccessPath(access_path) => { + if let Some(bytes) = &value.maybe_bytes { + btree_map.insert(access_path.path.clone(), bytes.clone()); + } + } + _ => return Err(anyhow!("Encountered unexpected key type {:?}", key)), + } + } + Ok(Self(btree_map)) + } +} diff --git a/types/src/account_view.rs b/types/src/account_view.rs new file mode 100644 index 0000000000000..c48c3bb0ab1cc --- /dev/null +++ b/types/src/account_view.rs @@ -0,0 +1,80 @@ +// Copyright (c) Aptos +// SPDX-License-Identifier: Apache-2.0 + +use crate::{ + access_path::AccessPath, + account_config::{AccountResource, BalanceResource, CRSNResource, ChainIdResource}, + on_chain_config::{ + access_path_for_config, ConfigurationResource, OnChainConfig, ValidatorSet, Version, + }, + state_store::state_key::StateKey, + validator_config::ValidatorConfig, +}; +use move_core_types::{account_address::AccountAddress, move_resource::MoveResource}; +use serde::de::DeserializeOwned; + +pub trait AccountView { + fn get_state_value(&self, state_key: &StateKey) -> anyhow::Result>>; + + fn get_account_address(&self) -> &AccountAddress; + + fn get_validator_set(&self) -> anyhow::Result> { + self.get_on_chain_config::() + } + + fn get_configuration_resource(&self) -> anyhow::Result> { + self.get_move_resource::() + } + + fn get_move_resource(&self) -> anyhow::Result> { + let state_key = self.get_state_key_for_path(T::struct_tag().access_vector()); + self.get_resource_impl(&state_key) + } + + fn get_validator_config_resource(&self) -> anyhow::Result> { + self.get_resource::() + } + + fn get_on_chain_config(&self) -> anyhow::Result> { + let state_key = self.get_state_key_for_path(access_path_for_config(T::CONFIG_ID).path); + self.get_resource_impl(&state_key) + } + + fn get_version(&self) -> anyhow::Result> { + self.get_on_chain_config::() + } + + fn get_resource(&self) -> anyhow::Result> { + self.get_resource_impl(&self.get_state_key_for_path(T::struct_tag().access_vector())) + } + + fn get_chain_id_resource(&self) -> anyhow::Result> { + self.get_resource::() + } + + fn get_crsn_resource(&self) -> anyhow::Result> { + self.get_resource::() + } + + fn get_balance_resource(&self) -> anyhow::Result> { + self.get_resource::() + } + + fn get_state_key_for_path(&self, path: Vec) -> StateKey { + StateKey::AccessPath(AccessPath::new(*self.get_account_address(), path)) + } + + fn get_account_resource(&self) -> anyhow::Result> { + self.get_resource::() + } + + fn get_resource_impl( + &self, + state_key: &StateKey, + ) -> anyhow::Result> { + self.get_state_value(state_key)? + .map(|bytes| bcs::from_bytes(&bytes)) + .transpose() + .map_err(Into::into) + } +} diff --git a/types/src/lib.rs b/types/src/lib.rs index 2d2eca1c3126d..60245cffaee7f 100644 --- a/types/src/lib.rs +++ b/types/src/lib.rs @@ -41,6 +41,7 @@ pub mod write_set; pub use account_address::AccountAddress as PeerId; +pub mod account_view; pub mod state_store; #[cfg(test)] mod unit_tests; diff --git a/types/src/on_chain_config/mod.rs b/types/src/on_chain_config/mod.rs index b790957d305c2..88f5919e1d7aa 100644 --- a/types/src/on_chain_config/mod.rs +++ b/types/src/on_chain_config/mod.rs @@ -157,9 +157,7 @@ pub trait OnChainConfig: Send + Sync + DeserializeOwned { let access_path = access_path_for_config(Self::CONFIG_ID); match storage.fetch_config(access_path) { Some(bytes) => Self::deserialize_into_config(&bytes).ok(), - None => storage - .fetch_config(dpn_access_path_for_config(Self::CONFIG_ID)) - .and_then(|bytes| Self::deserialize_into_config(&bytes).ok()), + None => None, } } } @@ -168,16 +166,7 @@ pub fn new_epoch_event_key() -> EventKey { EventKey::new_from_address(&config_address(), 4) } -pub fn dpn_access_path_for_config(config_id: ConfigID) -> AccessPath { - AccessPath::new( - config_address(), - AccessPath::resource_access_vec(diem_config_struct_tag( - Identifier::new(config_id.1).expect("fail to make identifier"), - )), - ) -} - -pub fn diem_config_struct_tag(config_name: Identifier) -> StructTag { +pub fn struct_tag_for_config(config_name: Identifier) -> StructTag { StructTag { address: CORE_CODE_ADDRESS, module: ConfigurationResource::MODULE_NAME.to_owned(), diff --git a/types/src/proptest_types.rs b/types/src/proptest_types.rs index 5f7bbd6e713c2..c51c669fe0ab6 100644 --- a/types/src/proptest_types.rs +++ b/types/src/proptest_types.rs @@ -5,6 +5,7 @@ use crate::{ access_path::AccessPath, account_address::{self, AccountAddress}, account_config::{AccountResource, BalanceResource}, + account_state::AccountState, account_state_blob::AccountStateBlob, block_info::{BlockInfo, Round}, block_metadata::BlockMetadata, @@ -43,7 +44,7 @@ use proptest::{ use proptest_derive::Arbitrary; use serde_json::Value; use std::{ - collections::{BTreeMap, BTreeSet}, + collections::{BTreeMap, BTreeSet, HashMap}, convert::{TryFrom, TryInto}, iter::Iterator, }; @@ -783,21 +784,34 @@ impl TransactionToCommitGen { .collect(); // Account states must be materialized last, to reflect the latest account and event // sequence numbers. - let account_states = self + let account_states: HashMap = self .account_state_gens .into_iter() .map(|(index, blob_gen)| { ( - StateKey::AccountAddressKey(universe.get_account_info(index).address), - StateValue::from(blob_gen.materialize(index, universe)), + universe.get_account_info(index).address, + blob_gen.materialize(index, universe), ) }) .collect(); + let mut state_updates = HashMap::new(); + for (account_address, blob) in account_states { + AccountState::try_from(&blob) + .unwrap() + .iter() + .for_each(|(key, value)| { + state_updates.insert( + StateKey::AccessPath(AccessPath::new(account_address, key.clone())), + StateValue::from(value.clone()), + ); + }); + } + TransactionToCommit::new( Transaction::UserTransaction(transaction), TransactionInfo::new_placeholder(self.gas_used, self.status), - account_states, + state_updates, None, self.write_set, events, diff --git a/types/src/state_store/state_key.rs b/types/src/state_store/state_key.rs index 5fe2d4451b1fd..b14b46df978b8 100644 --- a/types/src/state_store/state_key.rs +++ b/types/src/state_store/state_key.rs @@ -7,7 +7,6 @@ use aptos_crypto::{ HashValue, }; use aptos_crypto_derive::CryptoHasher; -use move_core_types::account_address::AccountAddress; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::FromPrimitive; use serde::{Deserialize, Serialize}; @@ -19,7 +18,6 @@ use thiserror::Error; )] #[cfg_attr(any(test, feature = "fuzzing"), derive(proptest_derive::Arbitrary))] pub enum StateKey { - AccountAddressKey(AccountAddress), AccessPath(AccessPath), TableItem { handle: u128, @@ -34,7 +32,6 @@ pub enum StateKey { #[repr(u8)] #[derive(Clone, Debug, FromPrimitive, ToPrimitive)] pub enum StateKeyTag { - AccountAddress, AccessPath, TableItem, Raw = 255, @@ -46,9 +43,6 @@ impl StateKey { let mut out = vec![]; let (prefix, raw_key) = match self { - StateKey::AccountAddressKey(account_address) => { - (StateKeyTag::AccountAddress, bcs::to_bytes(account_address)?) - } StateKey::AccessPath(access_path) => { (StateKeyTag::AccessPath, bcs::to_bytes(access_path)?) } @@ -73,9 +67,6 @@ impl StateKey { let state_key_tag = StateKeyTag::from_u8(tag).ok_or(StateKeyDecodeErr::UnknownTag { unknown_tag: tag })?; match state_key_tag { - StateKeyTag::AccountAddress => { - Ok(StateKey::AccountAddressKey(bcs::from_bytes(&val[1..])?)) - } StateKeyTag::AccessPath => Ok(StateKey::AccessPath(bcs::from_bytes(&val[1..])?)), StateKeyTag::TableItem => { const HANDLE_SIZE: usize = std::mem::size_of::(); diff --git a/types/src/state_store/state_key_prefix.rs b/types/src/state_store/state_key_prefix.rs index 7ed5b241c0fec..2187c71256104 100644 --- a/types/src/state_store/state_key_prefix.rs +++ b/types/src/state_store/state_key_prefix.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use crate::state_store::state_key::{StateKey, StateKeyTag}; +use move_core_types::account_address::AccountAddress; // Struct for defining prefix of a state key, which can be used for finding all the values with a // particular key prefix @@ -35,6 +36,12 @@ impl StateKeyPrefix { } } +impl From for StateKeyPrefix { + fn from(address: AccountAddress) -> Self { + Self::new(StateKeyTag::AccessPath, address.to_vec()) + } +} + #[cfg(test)] mod tests { use crate::{ diff --git a/vm-validator/src/unit_tests/vm_validator_test.rs b/vm-validator/src/unit_tests/vm_validator_test.rs index 0a72b7ea65ee4..62a7e2e44bb30 100644 --- a/vm-validator/src/unit_tests/vm_validator_test.rs +++ b/vm-validator/src/unit_tests/vm_validator_test.rs @@ -1,7 +1,7 @@ // Copyright (c) Aptos // SPDX-License-Identifier: Apache-2.0 -use crate::vm_validator::{TransactionValidation, VMValidator}; +use crate::vm_validator::{get_account_sequence_number, TransactionValidation, VMValidator}; use aptos_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; use aptos_transaction_builder::aptos_stdlib::{ encode_mint_script_function, encode_transfer_script_function, @@ -15,7 +15,10 @@ use aptos_types::{ }; use aptos_vm::AptosVM; use aptosdb::AptosDB; -use move_core_types::gas_schedule::{GasAlgebra, GasConstants, MAX_TRANSACTION_SIZE_IN_BYTES}; +use move_core_types::{ + account_address::AccountAddress, + gas_schedule::{GasAlgebra, GasConstants, MAX_TRANSACTION_SIZE_IN_BYTES}, +}; use rand::SeedableRng; use storage_interface::DbReaderWriter; @@ -195,6 +198,27 @@ fn test_validate_max_gas_units_below_min() { ); } +#[test] +fn test_get_account_sequence_number() { + let vm_validator = TestValidator::new(); + let root_address = account_config::aptos_root_address(); + assert_eq!( + get_account_sequence_number(vm_validator.vm_validator.db_reader.clone(), root_address,) + .unwrap() + .min_seq(), + 0 + ); + assert_eq!( + get_account_sequence_number( + vm_validator.vm_validator.db_reader, + AccountAddress::new([5u8; AccountAddress::LENGTH]), + ) + .unwrap() + .min_seq(), + 0 + ); +} + #[test] fn test_validate_max_gas_price_above_bounds() { let vm_validator = TestValidator::new(); diff --git a/vm-validator/src/vm_validator.rs b/vm-validator/src/vm_validator.rs index e7c18febd7938..c197d761ae152 100644 --- a/vm-validator/src/vm_validator.rs +++ b/vm-validator/src/vm_validator.rs @@ -2,21 +2,21 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use aptos_state_view::StateViewId; +use aptos_state_view::{account_with_state_view::AsAccountWithStateView, StateViewId}; use aptos_types::{ account_address::AccountAddress, - account_config::{AccountResource, AccountSequenceInfo}, - account_state::AccountState, - account_state_blob::AccountStateBlob, + account_config::AccountSequenceInfo, + account_view::AccountView, on_chain_config::OnChainConfigPayload, - state_store::state_key::StateKey, transaction::{SignedTransaction, VMValidatorResult}, }; use aptos_vm::AptosVM; use executor::components::apply_chunk_output::IntoLedgerView; use fail::fail_point; -use std::{convert::TryFrom, sync::Arc}; -use storage_interface::{verified_state_view::VerifiedStateView, DbReader}; +use std::sync::Arc; +use storage_interface::{ + state_view::LatestDbStateView, verified_state_view::VerifiedStateView, DbReader, +}; #[cfg(test)] #[path = "unit_tests/vm_validator_test.rs"] @@ -104,7 +104,7 @@ impl TransactionValidation for VMValidator { /// returns account's sequence number from storage pub fn get_account_sequence_number( - storage: &dyn DbReader, + storage: Arc, address: AccountAddress, ) -> Result { fail_point!("vm_validator::get_account_sequence_number", |_| { @@ -112,18 +112,21 @@ pub fn get_account_sequence_number( "Injected error in get_account_sequence_number" )) }); - match storage.get_latest_state_value(StateKey::AccountAddressKey(address))? { - Some(blob) => { - if let Ok(Some(crsn)) = AccountState::try_from(&blob)?.get_crsn_resource() { - return Ok(AccountSequenceInfo::CRSN { - min_nonce: crsn.min_nonce(), - size: crsn.size(), - }); - } - let seqno = - AccountResource::try_from(&AccountStateBlob::try_from(blob)?)?.sequence_number(); - Ok(AccountSequenceInfo::Sequential(seqno)) - } + let db_state_view = storage.latest_state_view()?; + + let account_state_view = db_state_view.as_account_with_state_view(&address); + + if let Ok(Some(crsn)) = account_state_view.get_crsn_resource() { + return Ok(AccountSequenceInfo::CRSN { + min_nonce: crsn.min_nonce(), + size: crsn.size(), + }); + } + + match account_state_view.get_account_resource()? { + Some(account_resource) => Ok(AccountSequenceInfo::Sequential( + account_resource.sequence_number(), + )), None => Ok(AccountSequenceInfo::Sequential(0)), } }